<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>web2py.gluon.html</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="web2py.gluon-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://www.web2py.com">web2py Web Framework</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        Package&nbsp;web2py ::
        <a href="web2py.gluon-module.html">Package&nbsp;gluon</a> ::
        Module&nbsp;html
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="web2py.gluon.html-pysrc.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<h1 class="epydoc">Source Code for <a href="web2py.gluon.html-module.html">Module web2py.gluon.html</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-docstring">This file is part of the web2py Web Framework</tt> </tt>
<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-docstring">Copyrighted by Massimo Di Pierro &lt;mdipierro@cs.depaul.edu&gt;</tt> </tt>
<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-docstring">License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)</tt> </tt>
<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"> </tt>
<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">cgi</tt> </tt>
<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">copy</tt> </tt>
<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Variable web2py.gluon.dal.BaseAdapter.types=web2py.gluon.dal.BaseAdapter-class.html#types,Variable web2py.gluon.dal.CouchDBAdapter.types=web2py.gluon.dal.CouchDBAdapter-class.html#types,Variable web2py.gluon.dal.DB2Adapter.types=web2py.gluon.dal.DB2Adapter-class.html#types,Variable web2py.gluon.dal.FireBirdAdapter.types=web2py.gluon.dal.FireBirdAdapter-class.html#types,Variable web2py.gluon.dal.GoogleDatastoreAdapter.types=web2py.gluon.dal.GoogleDatastoreAdapter-class.html#types,Variable web2py.gluon.dal.IMAPAdapter.types=web2py.gluon.dal.IMAPAdapter-class.html#types,Variable web2py.gluon.dal.InformixAdapter.types=web2py.gluon.dal.InformixAdapter-class.html#types,Variable web2py.gluon.dal.IngresAdapter.types=web2py.gluon.dal.IngresAdapter-class.html#types,Variable web2py.gluon.dal.IngresUnicodeAdapter.types=web2py.gluon.dal.IngresUnicodeAdapter-class.html#types,Variable web2py.gluon.dal.MSSQL2Adapter.types=web2py.gluon.dal.MSSQL2Adapter-class.html#types,Variable web2py.gluon.dal.MSSQLAdapter.types=web2py.gluon.dal.MSSQLAdapter-class.html#types,Variable web2py.gluon.dal.MongoDBAdapter.types=web2py.gluon.dal.MongoDBAdapter-class.html#types,Variable web2py.gluon.dal.MySQLAdapter.types=web2py.gluon.dal.MySQLAdapter-class.html#types,Variable web2py.gluon.dal.OracleAdapter.types=web2py.gluon.dal.OracleAdapter-class.html#types,Variable web2py.gluon.dal.PostgreSQLAdapter.types=web2py.gluon.dal.PostgreSQLAdapter-class.html#types,Variable web2py.gluon.dal.SAPDBAdapter.types=web2py.gluon.dal.SAPDBAdapter-class.html#types,Variable web2py.gluon.dal.TeradataAdapter.types=web2py.gluon.dal.TeradataAdapter-class.html#types"><a title="web2py.gluon.dal.BaseAdapter.types
web2py.gluon.dal.CouchDBAdapter.types
web2py.gluon.dal.DB2Adapter.types
web2py.gluon.dal.FireBirdAdapter.types
web2py.gluon.dal.GoogleDatastoreAdapter.types
web2py.gluon.dal.IMAPAdapter.types
web2py.gluon.dal.InformixAdapter.types
web2py.gluon.dal.IngresAdapter.types
web2py.gluon.dal.IngresUnicodeAdapter.types
web2py.gluon.dal.MSSQL2Adapter.types
web2py.gluon.dal.MSSQLAdapter.types
web2py.gluon.dal.MongoDBAdapter.types
web2py.gluon.dal.MySQLAdapter.types
web2py.gluon.dal.OracleAdapter.types
web2py.gluon.dal.PostgreSQLAdapter.types
web2py.gluon.dal.SAPDBAdapter.types
web2py.gluon.dal.TeradataAdapter.types" class="py-name" href="#" onclick="return doclink('link-0', 'types', 'link-0');">types</a></tt> </tt>
<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module web2py.gluon.sanitizer=web2py.gluon.sanitizer-module.html"><a title="web2py.gluon.sanitizer" class="py-name" href="#" onclick="return doclink('link-1', 'sanitizer', 'link-1');">sanitizer</a></tt> </tt>
<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module web2py.gluon.rewrite=web2py.gluon.rewrite-module.html"><a title="web2py.gluon.rewrite" class="py-name" href="#" onclick="return doclink('link-2', 'rewrite', 'link-2');">rewrite</a></tt> </tt>
<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt>
<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module web2py.gluon.decoder=web2py.gluon.decoder-module.html,Function web2py.gluon.decoder.decoder()=web2py.gluon.decoder-module.html#decoder"><a title="web2py.gluon.decoder
web2py.gluon.decoder.decoder" class="py-name" href="#" onclick="return doclink('link-3', 'decoder', 'link-3');">decoder</a></tt> </tt>
<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">copy_reg</tt> </tt>
<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">cPickle</tt> </tt>
<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">marshal</tt> </tt>
<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">HTMLParser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">HTMLParser</tt> </tt>
<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">htmlentitydefs</tt> <tt class="py-keyword">import</tt> <tt class="py-name">name2codepoint</tt> </tt>
<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">contrib</tt><tt class="py-op">.</tt><tt class="py-name">markmin</tt><tt class="py-op">.</tt><tt class="py-name">markmin2html</tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Method web2py.gluon.globals.Response.render()=web2py.gluon.globals.Response-class.html#render,Function web2py.gluon.template.render()=web2py.gluon.template-module.html#render"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-4', 'render', 'link-4');">render</a></tt> </tt>
<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"> </tt>
<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name" targets="Module web2py.gluon.storage=web2py.gluon.storage-module.html"><a title="web2py.gluon.storage" class="py-name" href="#" onclick="return doclink('link-5', 'storage', 'link-5');">storage</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class web2py.gluon.storage.Storage=web2py.gluon.storage.Storage-class.html"><a title="web2py.gluon.storage.Storage" class="py-name" href="#" onclick="return doclink('link-6', 'Storage', 'link-6');">Storage</a></tt> </tt>
<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name" targets="Module web2py.gluon.highlight=web2py.gluon.highlight-module.html,Method web2py.gluon.highlight.Highlighter.highlight()=web2py.gluon.highlight.Highlighter-class.html#highlight,Function web2py.gluon.highlight.highlight()=web2py.gluon.highlight-module.html#highlight"><a title="web2py.gluon.highlight
web2py.gluon.highlight.Highlighter.highlight
web2py.gluon.highlight.highlight" class="py-name" href="#" onclick="return doclink('link-7', 'highlight', 'link-7');">highlight</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="web2py.gluon.highlight
web2py.gluon.highlight.Highlighter.highlight
web2py.gluon.highlight.highlight" class="py-name" href="#" onclick="return doclink('link-8', 'highlight', 'link-7');">highlight</a></tt> </tt>
<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name" targets="Module web2py.gluon.utils=web2py.gluon.utils-module.html"><a title="web2py.gluon.utils" class="py-name" href="#" onclick="return doclink('link-9', 'utils', 'link-9');">utils</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Function web2py.gluon.utils.web2py_uuid()=web2py.gluon.utils-module.html#web2py_uuid"><a title="web2py.gluon.utils.web2py_uuid" class="py-name" href="#" onclick="return doclink('link-10', 'web2py_uuid', 'link-10');">web2py_uuid</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Function web2py.gluon.utils.hmac_hash()=web2py.gluon.utils-module.html#hmac_hash"><a title="web2py.gluon.utils.hmac_hash" class="py-name" href="#" onclick="return doclink('link-11', 'hmac_hash', 'link-11');">hmac_hash</a></tt> </tt>
<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"> </tt>
<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable web2py.gluon.html.regex_crlf=web2py.gluon.html-module.html#regex_crlf"><a title="web2py.gluon.html.regex_crlf" class="py-name" href="#" onclick="return doclink('link-12', 'regex_crlf', 'link-12');">regex_crlf</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'\r|\n'</tt><tt class="py-op">)</tt> </tt>
<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"> </tt>
<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Function web2py.gluon.html.join()=web2py.gluon.html-module.html#join,Method web2py.gluon.rocket.Listener.join()=web2py.gluon.rocket.Listener-class.html#join"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-13', 'join', 'link-13');">join</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-14', 'join', 'link-13');">join</a></tt> </tt>
<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"> </tt>
<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line">    <tt class="py-string">'A'</tt><tt class="py-op">,</tt> </tt>
<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line">    <tt class="py-string">'B'</tt><tt class="py-op">,</tt> </tt>
<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">    <tt class="py-string">'BEAUTIFY'</tt><tt class="py-op">,</tt> </tt>
<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">    <tt class="py-string">'BODY'</tt><tt class="py-op">,</tt> </tt>
<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line">    <tt class="py-string">'BR'</tt><tt class="py-op">,</tt> </tt>
<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">    <tt class="py-string">'BUTTON'</tt><tt class="py-op">,</tt> </tt>
<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line">    <tt class="py-string">'CENTER'</tt><tt class="py-op">,</tt> </tt>
<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line">    <tt class="py-string">'CAT'</tt><tt class="py-op">,</tt> </tt>
<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">    <tt class="py-string">'CODE'</tt><tt class="py-op">,</tt> </tt>
<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line">    <tt class="py-string">'COL'</tt><tt class="py-op">,</tt> </tt>
<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">    <tt class="py-string">'COLGROUP'</tt><tt class="py-op">,</tt> </tt>
<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line">    <tt class="py-string">'DIV'</tt><tt class="py-op">,</tt> </tt>
<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line">    <tt class="py-string">'EM'</tt><tt class="py-op">,</tt> </tt>
<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line">    <tt class="py-string">'EMBED'</tt><tt class="py-op">,</tt> </tt>
<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line">    <tt class="py-string">'FIELDSET'</tt><tt class="py-op">,</tt> </tt>
<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line">    <tt class="py-string">'FORM'</tt><tt class="py-op">,</tt> </tt>
<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">    <tt class="py-string">'H1'</tt><tt class="py-op">,</tt> </tt>
<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">    <tt class="py-string">'H2'</tt><tt class="py-op">,</tt> </tt>
<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line">    <tt class="py-string">'H3'</tt><tt class="py-op">,</tt> </tt>
<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line">    <tt class="py-string">'H4'</tt><tt class="py-op">,</tt> </tt>
<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">    <tt class="py-string">'H5'</tt><tt class="py-op">,</tt> </tt>
<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line">    <tt class="py-string">'H6'</tt><tt class="py-op">,</tt> </tt>
<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line">    <tt class="py-string">'HEAD'</tt><tt class="py-op">,</tt> </tt>
<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line">    <tt class="py-string">'HR'</tt><tt class="py-op">,</tt> </tt>
<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line">    <tt class="py-string">'HTML'</tt><tt class="py-op">,</tt> </tt>
<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line">    <tt class="py-string">'I'</tt><tt class="py-op">,</tt> </tt>
<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">    <tt class="py-string">'IFRAME'</tt><tt class="py-op">,</tt> </tt>
<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">    <tt class="py-string">'IMG'</tt><tt class="py-op">,</tt> </tt>
<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">    <tt class="py-string">'INPUT'</tt><tt class="py-op">,</tt> </tt>
<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">    <tt class="py-string">'LABEL'</tt><tt class="py-op">,</tt> </tt>
<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">    <tt class="py-string">'LEGEND'</tt><tt class="py-op">,</tt> </tt>
<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">    <tt class="py-string">'LI'</tt><tt class="py-op">,</tt> </tt>
<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line">    <tt class="py-string">'LINK'</tt><tt class="py-op">,</tt> </tt>
<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">    <tt class="py-string">'OL'</tt><tt class="py-op">,</tt> </tt>
<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">    <tt class="py-string">'UL'</tt><tt class="py-op">,</tt> </tt>
<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">    <tt class="py-string">'MARKMIN'</tt><tt class="py-op">,</tt> </tt>
<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line">    <tt class="py-string">'MENU'</tt><tt class="py-op">,</tt> </tt>
<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">    <tt class="py-string">'META'</tt><tt class="py-op">,</tt> </tt>
<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">    <tt class="py-string">'OBJECT'</tt><tt class="py-op">,</tt> </tt>
<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">    <tt class="py-string">'ON'</tt><tt class="py-op">,</tt> </tt>
<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">    <tt class="py-string">'OPTION'</tt><tt class="py-op">,</tt> </tt>
<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">    <tt class="py-string">'P'</tt><tt class="py-op">,</tt> </tt>
<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">    <tt class="py-string">'PRE'</tt><tt class="py-op">,</tt> </tt>
<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">    <tt class="py-string">'SCRIPT'</tt><tt class="py-op">,</tt> </tt>
<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">    <tt class="py-string">'OPTGROUP'</tt><tt class="py-op">,</tt> </tt>
<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">    <tt class="py-string">'SELECT'</tt><tt class="py-op">,</tt> </tt>
<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">    <tt class="py-string">'SPAN'</tt><tt class="py-op">,</tt> </tt>
<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">    <tt class="py-string">'STYLE'</tt><tt class="py-op">,</tt> </tt>
<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">    <tt class="py-string">'TABLE'</tt><tt class="py-op">,</tt> </tt>
<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">    <tt class="py-string">'TAG'</tt><tt class="py-op">,</tt> </tt>
<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">    <tt class="py-string">'TD'</tt><tt class="py-op">,</tt> </tt>
<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">    <tt class="py-string">'TEXTAREA'</tt><tt class="py-op">,</tt> </tt>
<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">    <tt class="py-string">'TH'</tt><tt class="py-op">,</tt> </tt>
<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">    <tt class="py-string">'THEAD'</tt><tt class="py-op">,</tt> </tt>
<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">    <tt class="py-string">'TBODY'</tt><tt class="py-op">,</tt> </tt>
<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">    <tt class="py-string">'TFOOT'</tt><tt class="py-op">,</tt> </tt>
<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">    <tt class="py-string">'TITLE'</tt><tt class="py-op">,</tt> </tt>
<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">    <tt class="py-string">'TR'</tt><tt class="py-op">,</tt> </tt>
<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">    <tt class="py-string">'TT'</tt><tt class="py-op">,</tt> </tt>
<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">    <tt class="py-string">'URL'</tt><tt class="py-op">,</tt> </tt>
<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">    <tt class="py-string">'XHTML'</tt><tt class="py-op">,</tt> </tt>
<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">    <tt class="py-string">'XML'</tt><tt class="py-op">,</tt> </tt>
<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">    <tt class="py-string">'xmlescape'</tt><tt class="py-op">,</tt> </tt>
<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-string">'embed64'</tt><tt class="py-op">,</tt> </tt>
<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"> </tt>
<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"> </tt>
<a name="xmlescape"></a><div id="xmlescape-def"><a name="L104"></a><tt class="py-lineno"> 104</tt> <a class="py-toggle" href="#" id="xmlescape-toggle" onclick="return toggle('xmlescape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#xmlescape">xmlescape</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">quote</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="xmlescape-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="xmlescape-expanded"><a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-docstring">    returns an escaped string of the provided data</tt> </tt>
<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-docstring">    :param data: the data to be escaped</tt> </tt>
<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-docstring">    :param quote: optional (default False)</tt> </tt>
<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"> </tt>
<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">    <tt class="py-comment"># first try the xml function</tt> </tt>
<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt><tt class="py-string">'xml'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method web2py.gluon.dal.Rows.xml()=web2py.gluon.dal.Rows-class.html#xml,Method web2py.gluon.html.A.xml()=web2py.gluon.html.A-class.html#xml,Method web2py.gluon.html.CODE.xml()=web2py.gluon.html.CODE-class.html#xml,Method web2py.gluon.html.DIV.xml()=web2py.gluon.html.DIV-class.html#xml,Method web2py.gluon.html.FORM.xml()=web2py.gluon.html.FORM-class.html#xml,Method web2py.gluon.html.HTML.xml()=web2py.gluon.html.HTML-class.html#xml,Method web2py.gluon.html.INPUT.xml()=web2py.gluon.html.INPUT-class.html#xml,Method web2py.gluon.html.MARKMIN.xml()=web2py.gluon.html.MARKMIN-class.html#xml,Method web2py.gluon.html.MENU.xml()=web2py.gluon.html.MENU-class.html#xml,Method web2py.gluon.html.P.xml()=web2py.gluon.html.P-class.html#xml,Method web2py.gluon.html.SCRIPT.xml()=web2py.gluon.html.SCRIPT-class.html#xml,Method web2py.gluon.html.STYLE.xml()=web2py.gluon.html.STYLE-class.html#xml,Method web2py.gluon.html.XHTML.xml()=web2py.gluon.html.XHTML-class.html#xml,Method web2py.gluon.html.XML.xml()=web2py.gluon.html.XML-class.html#xml,Method web2py.gluon.html.XmlComponent.xml()=web2py.gluon.html.XmlComponent-class.html#xml,Method web2py.gluon.languages.lazyT.xml()=web2py.gluon.languages.lazyT-class.html#xml,Function web2py.gluon.serializers.xml()=web2py.gluon.serializers-module.html#xml,Method web2py.gluon.tools.Expose.xml()=web2py.gluon.tools.Expose-class.html#xml,Method web2py.gluon.tools.Recaptcha.xml()=web2py.gluon.tools.Recaptcha-class.html#xml,Method web2py.gluon.tools.Service.xml()=web2py.gluon.tools.Service-class.html#xml"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-15', 'xml', 'link-15');">xml</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-16', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"> </tt>
<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">    <tt class="py-comment"># otherwise, make it a string</tt> </tt>
<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method web2py.gluon.languages.lazyT.encode()=web2py.gluon.languages.lazyT-class.html#encode"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-17', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt> </tt>
<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"> </tt>
<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">    <tt class="py-comment"># ... and do the escaping</tt> </tt>
<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method web2py.gluon.dal.DatabaseStoredFile.escape()=web2py.gluon.dal.DatabaseStoredFile-class.html#escape"><a title="web2py.gluon.dal.DatabaseStoredFile.escape" class="py-name" href="#" onclick="return doclink('link-18', 'escape', 'link-18');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"'"</tt><tt class="py-op">,</tt><tt class="py-string">"&amp;#x27;"</tt><tt class="py-op">)</tt> </tt>
<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">data</tt> </tt>
</div><a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"> </tt>
<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"> </tt>
<a name="truncate_string"></a><div id="truncate_string-def"><a name="L127"></a><tt class="py-lineno"> 127</tt> <a class="py-toggle" href="#" id="truncate_string-toggle" onclick="return toggle('truncate_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#truncate_string">truncate_string</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">length</tt><tt class="py-op">,</tt> <tt class="py-param">dots</tt><tt class="py-op">=</tt><tt class="py-string">'...'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="truncate_string-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="truncate_string-expanded"><a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">    <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method web2py.gluon.languages.lazyT.decode()=web2py.gluon.languages.lazyT-class.html#decode"><a title="web2py.gluon.languages.lazyT.decode" class="py-name" href="#" onclick="return doclink('link-19', 'decode', 'link-19');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-20" class="py-name" targets="Method web2py.gluon.dal.Expression.len()=web2py.gluon.dal.Expression-class.html#len"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-20', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-name">length</tt><tt class="py-op">:</tt> </tt>
<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">length</tt><tt class="py-op">-</tt><tt id="link-21" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-21', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">dots</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-22', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">dots</tt> </tt>
<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">text</tt> </tt>
</div><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"> </tt>
<a name="URL"></a><div id="URL-def"><a name="L133"></a><tt class="py-lineno"> 133</tt> <a class="py-toggle" href="#" id="URL-toggle" onclick="return toggle('URL');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#URL">URL</a><tt class="py-op">(</tt> </tt>
<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">    <tt class="py-param">a</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">    <tt class="py-param">c</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">    <tt class="py-param">f</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt class="py-param">r</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">    <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">    <tt class="py-param">vars</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">    <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> </tt>
<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">    <tt class="py-param">extension</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">    <tt class="py-param">env</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">    <tt class="py-param">hmac_key</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">    <tt class="py-param">hash_vars</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">    <tt class="py-param">salt</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">    <tt class="py-param">user_signature</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">    <tt class="py-param">scheme</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">    <tt class="py-param">host</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">    <tt class="py-param">port</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">    <tt class="py-param">encode_embedded_slash</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">    <tt class="py-param">url_encode</tt><tt class="py-op">=</tt><tt class="py-name">True</tt> </tt>
<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="URL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="URL-expanded"><a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">    generate a URL</tt> </tt>
<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['x', 'y', 'z'],</tt> </tt>
<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">        ...     vars={'p':1, 'q':2}, anchor='1'))</tt> </tt>
<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/x/y/z?p=1&amp;q=2#1'</tt> </tt>
<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['x', 'y', 'z'],</tt> </tt>
<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">        ...     vars={'p':(1,3), 'q':2}, anchor='1'))</tt> </tt>
<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/x/y/z?p=1&amp;p=3&amp;q=2#1'</tt> </tt>
<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['x', 'y', 'z'],</tt> </tt>
<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">        ...     vars={'p':(3,1), 'q':2}, anchor='1'))</tt> </tt>
<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/x/y/z?p=3&amp;p=1&amp;q=2#1'</tt> </tt>
<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', anchor='1+2'))</tt> </tt>
<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f#1%2B2'</tt> </tt>
<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['x', 'y', 'z'],</tt> </tt>
<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-docstring">        ...     vars={'p':(1,3), 'q':2}, anchor='1', hmac_key='key'))</tt> </tt>
<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/x/y/z?p=1&amp;p=3&amp;q=2&amp;_signature=a32530f0d0caa80964bb92aad2bedf8a4486a31f#1'</tt> </tt>
<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['w/x', 'y/z']))</tt> </tt>
<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/w/x/y/z'</tt> </tt>
<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['w/x', 'y/z'], encode_embedded_slash=True))</tt> </tt>
<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/w%2Fx/y%2Fz'</tt> </tt>
<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['%(id)d'], url_encode=False))</tt> </tt>
<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/%(id)d'</tt> </tt>
<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', args=['%(id)d'], url_encode=True))</tt> </tt>
<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f/%25%28id%29d'</tt> </tt>
<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', vars={'id' : '%(id)d' }, url_encode=False))</tt> </tt>
<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f?id=%(id)d'</tt> </tt>
<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', vars={'id' : '%(id)d' }, url_encode=True))</tt> </tt>
<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f?id=%25%28id%29d'</tt> </tt>
<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', anchor='%(id)d', url_encode=False))</tt> </tt>
<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f#%(id)d'</tt> </tt>
<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; str(URL(a='a', c='c', f='f', anchor='%(id)d', url_encode=True))</tt> </tt>
<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">        '/a/c/f#%25%28id%29d'</tt> </tt>
<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">    generates a url '/a/c/f' corresponding to application a, controller c</tt> </tt>
<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">    and function f. If r=request is passed, a, c, f are set, respectively,</tt> </tt>
<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring">    to r.application, r.controller, r.function.</tt> </tt>
<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">    The more typical usage is:</tt> </tt>
<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring">    URL(r=request, f='index') that generates a url for the index function</tt> </tt>
<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">    within the present application and controller.</tt> </tt>
<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-docstring">    :param a: application (default to current if r is given)</tt> </tt>
<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-docstring">    :param c: controller (default to current if r is given)</tt> </tt>
<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-docstring">    :param f: function (default to current if r is given)</tt> </tt>
<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">    :param r: request (optional)</tt> </tt>
<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">    :param args: any arguments (optional)</tt> </tt>
<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">    :param vars: any variables (optional)</tt> </tt>
<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring">    :param anchor: anchorname, without # (optional)</tt> </tt>
<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">    :param hmac_key: key to use when generating hmac signature (optional)</tt> </tt>
<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">    :param hash_vars: which of the vars to include in our hmac signature</tt> </tt>
<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">        True (default) - hash all vars, False - hash none of the vars,</tt> </tt>
<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-docstring">        iterable - hash only the included vars ['key1','key2']</tt> </tt>
<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-docstring">    :param scheme: URI scheme (True, 'http' or 'https', etc); forces absolute URL (optional)</tt> </tt>
<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-docstring">    :param host: string to force absolute URL with host (True means http_host)</tt> </tt>
<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-docstring">    :param port: optional port number (forces absolute URL)</tt> </tt>
<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-docstring">    :raises SyntaxError: when no application, controller or function is</tt> </tt>
<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-docstring">        available</tt> </tt>
<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-docstring">    :raises SyntaxError: when a CRLF is found in the generated url</tt> </tt>
<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"> </tt>
<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">    <tt class="py-name">vars</tt> <tt class="py-op">=</tt> <tt class="py-name">vars</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">    <tt class="py-name">application</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">    <tt class="py-name">controller</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">    <tt class="py-name">function</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">args</tt><tt class="py-op">]</tt> </tt>
<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"> </tt>
<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">r</tt><tt class="py-op">:</tt> </tt>
<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">a</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">c</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">a</tt> <tt class="py-keyword">and</tt> <tt class="py-name">c</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-23" class="py-name" targets="Module web2py.gluon.globals=web2py.gluon.globals-module.html"><a title="web2py.gluon.globals" class="py-name" href="#" onclick="return doclink('link-23', 'globals', 'link-23');">globals</a></tt> <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Variable web2py.gluon.current=web2py.gluon-module.html#current,Variable web2py.gluon.globals.current=web2py.gluon.globals-module.html#current,Variable web2py.gluon.tools.current=web2py.gluon.tools-module.html#current"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-24', 'current', 'link-24');">current</a></tt> </tt>
<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-25', 'current', 'link-24');">current</a></tt><tt class="py-op">,</tt><tt class="py-string">'request'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-26', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Variable web2py.gluon.request=web2py.gluon-module.html#request"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-27', 'request', 'link-27');">request</a></tt> </tt>
<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">r</tt><tt class="py-op">:</tt> </tt>
<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-name">application</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">application</tt> </tt>
<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-name">controller</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">controller</tt> </tt>
<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-name">function</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">function</tt> </tt>
<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">        <tt id="link-28" class="py-name" targets="Function web2py.gluon.shell.env()=web2py.gluon.shell-module.html#env"><a title="web2py.gluon.shell.env" class="py-name" href="#" onclick="return doclink('link-28', 'env', 'link-28');">env</a></tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="web2py.gluon.shell.env" class="py-name" href="#" onclick="return doclink('link-29', 'env', 'link-28');">env</a></tt> </tt>
<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">extension</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">extension</tt> <tt class="py-op">!=</tt> <tt class="py-string">'html'</tt><tt class="py-op">:</tt> </tt>
<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">            <tt class="py-name">extension</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">extension</tt> </tt>
<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">a</tt><tt class="py-op">:</tt> </tt>
<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">        <tt class="py-name">application</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">:</tt> </tt>
<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-name">controller</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">                <tt class="py-name">function</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt class="py-string">'when calling URL, function or function name required'</tt> </tt>
<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-string">'/'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">            <tt class="py-name">function</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">args</tt> </tt>
<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">            <tt class="py-name">function</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt> </tt>
<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'.'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">function</tt><tt class="py-op">:</tt> </tt>
<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">            <tt class="py-name">function</tt><tt class="py-op">,</tt> <tt class="py-name">extension</tt> <tt class="py-op">=</tt> <tt class="py-name">function</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"> </tt>
<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">    <tt class="py-name">function2</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">function</tt><tt class="py-op">,</tt><tt class="py-name">extension</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"> </tt>
<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">application</tt> <tt class="py-keyword">and</tt> <tt class="py-name">controller</tt> <tt class="py-keyword">and</tt> <tt class="py-name">function</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt class="py-string">'not enough information to build the url'</tt> </tt>
<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"> </tt>
<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">url_encode</tt><tt class="py-op">:</tt> </tt>
<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">encode_embedded_slash</tt><tt class="py-op">:</tt> </tt>
<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-30', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Variable sqlite3.dbapi2.x=sqlite3.dbapi2-module.html#x"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-31', 'x', 'link-31');">x</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-32" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-32', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-33', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-34', 'x', 'link-31');">x</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-35" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-35', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-36', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-37', 'x', 'link-31');">x</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-38" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-38', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">        <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"> </tt>
<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method web2py.gluon.dal.Expression.endswith()=web2py.gluon.dal.Expression-class.html#endswith"><a title="web2py.gluon.dal.Expression.endswith" class="py-name" href="#" onclick="return doclink('link-39', 'endswith', 'link-39');">endswith</a></tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-name">other</tt> <tt class="py-op">+=</tt> <tt class="py-string">'/'</tt>    <tt class="py-comment"># add trailing slash to make last trailing empty arg explicit</tt> </tt>
<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"> </tt>
<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">vars</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'_signature'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">vars</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'_signature'</tt><tt class="py-op">)</tt> </tt>
<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">    <tt class="py-name">list_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">vals</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">vars</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">            <tt class="py-name">vals</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">vals</tt><tt class="py-op">]</tt> </tt>
<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">vals</tt><tt class="py-op">:</tt> </tt>
<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">            <tt class="py-name">list_vars</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method web2py.gluon.html.DIV.append()=web2py.gluon.html.DIV-class.html#append,Method web2py.gluon.template.BlockNode.append()=web2py.gluon.template.BlockNode-class.html#append,Method web2py.gluon.template.Content.append()=web2py.gluon.template.Content-class.html#append"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-40', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt>
<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">user_signature</tt><tt class="py-op">:</tt> </tt>
<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-41" class="py-name"><a title="web2py.gluon.globals" class="py-name" href="#" onclick="return doclink('link-41', 'globals', 'link-23');">globals</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-42', 'current', 'link-24');">current</a></tt> </tt>
<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-43" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-43', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Variable web2py.gluon.session=web2py.gluon-module.html#session"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-44', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">:</tt> </tt>
<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">            <tt class="py-name">hmac_key</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-45', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-46', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">hmac_key</tt> </tt>
<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"> </tt>
<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hmac_key</tt><tt class="py-op">:</tt> </tt>
<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-comment"># generate an hmac signature of the vars &amp; args so can later</tt> </tt>
<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># verify the user hasn't messed with anything</tt> </tt>
<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-name">h_args</tt> <tt class="py-op">=</tt> <tt class="py-string">'/%s/%s/%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">application</tt><tt class="py-op">,</tt> <tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">function2</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"> </tt>
<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt class="py-comment"># how many of the vars should we include in our hash?</tt> </tt>
<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt>       <tt class="py-comment"># include them all</tt> </tt>
<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">            <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-name">list_vars</tt> </tt>
<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt>    <tt class="py-comment"># include none of them</tt> </tt>
<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">            <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt>                       <tt class="py-comment"># include just those specified</tt> </tt>
<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">hash_vars</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">                <tt class="py-name">hash_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">hash_vars</tt><tt class="py-op">]</tt> </tt>
<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">            <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_vars</tt> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">hash_vars</tt><tt class="py-op">]</tt> </tt>
<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"> </tt>
<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">        <tt class="py-comment"># re-assembling the same way during hash authentication</tt> </tt>
<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-47" class="py-name" targets="Variable web2py.gluon.http.HTTP.message=web2py.gluon.http.HTTP-class.html#message"><a title="web2py.gluon.http.HTTP.message" class="py-name" href="#" onclick="return doclink('link-47', 'message', 'link-47');">message</a></tt> <tt class="py-op">=</tt> <tt class="py-name">h_args</tt> <tt class="py-op">+</tt> <tt class="py-string">'?'</tt> <tt class="py-op">+</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">h_vars</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"> </tt>
<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="web2py.gluon.utils.hmac_hash" class="py-name" href="#" onclick="return doclink('link-48', 'hmac_hash', 'link-11');">hmac_hash</a></tt><tt class="py-op">(</tt><tt id="link-49" class="py-name"><a title="web2py.gluon.http.HTTP.message" class="py-name" href="#" onclick="return doclink('link-49', 'message', 'link-47');">message</a></tt><tt class="py-op">,</tt> <tt class="py-name">hmac_key</tt><tt class="py-op">,</tt> <tt class="py-name">digest_alg</tt><tt class="py-op">=</tt><tt class="py-string">'sha1'</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">=</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt>
<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-comment"># add the signature into vars</tt> </tt>
<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">list_vars</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-50', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'_signature'</tt><tt class="py-op">,</tt> <tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"> </tt>
<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">list_vars</tt><tt class="py-op">:</tt> </tt>
<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">url_encode</tt><tt class="py-op">:</tt> </tt>
<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">+=</tt> <tt class="py-string">'?%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">list_vars</tt><tt class="py-op">)</tt> </tt>
<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">+=</tt> <tt class="py-string">'?%s'</tt> <tt class="py-op">%</tt> <tt class="py-string">'&amp;'</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-51', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">'='</tt><tt class="py-op">+</tt><tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_vars</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt><tt class="py-op">:</tt> </tt>
<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">url_encode</tt><tt class="py-op">:</tt> </tt>
<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">+=</tt> <tt class="py-string">'#'</tt> <tt class="py-op">+</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">+=</tt> <tt class="py-string">'#'</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">extension</tt><tt class="py-op">:</tt> </tt>
<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-name">function</tt> <tt class="py-op">+=</tt> <tt class="py-string">'.'</tt> <tt class="py-op">+</tt> <tt class="py-name">extension</tt> </tt>
<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"> </tt>
<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-52" class="py-name"><a title="web2py.gluon.html.regex_crlf" class="py-name" href="#" onclick="return doclink('link-52', 'regex_crlf', 'link-12');">regex_crlf</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method web2py.gluon.tools.Crud.search()=web2py.gluon.tools.Crud-class.html#search"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-53', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-54', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">application</tt><tt class="py-op">,</tt> <tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">function</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt class="py-string">'CRLF Injection Detected'</tt> </tt>
<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">    <tt id="link-55" class="py-name" targets="Method web2py.gluon.tools.Auth.url()=web2py.gluon.tools.Auth-class.html#url,Method web2py.gluon.tools.Crud.url()=web2py.gluon.tools.Crud-class.html#url"><a title="web2py.gluon.tools.Auth.url
web2py.gluon.tools.Crud.url" class="py-name" href="#" onclick="return doclink('link-55', 'url', 'link-55');">url</a></tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="web2py.gluon.rewrite" class="py-name" href="#" onclick="return doclink('link-56', 'rewrite', 'link-2');">rewrite</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Function web2py.gluon.rewrite.url_out()=web2py.gluon.rewrite-module.html#url_out"><a title="web2py.gluon.rewrite.url_out" class="py-name" href="#" onclick="return doclink('link-57', 'url_out', 'link-57');">url_out</a></tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="web2py.gluon.shell.env" class="py-name" href="#" onclick="return doclink('link-58', 'env', 'link-28');">env</a></tt><tt class="py-op">,</tt> <tt class="py-name">application</tt><tt class="py-op">,</tt> <tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">function</tt><tt class="py-op">,</tt> </tt>
<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                          <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-59" class="py-name"><a title="web2py.gluon.tools.Auth.url
web2py.gluon.tools.Crud.url" class="py-name" href="#" onclick="return doclink('link-59', 'url', 'link-55');">url</a></tt> </tt>
</div><a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"> </tt>
<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"> </tt>
<a name="verifyURL"></a><div id="verifyURL-def"><a name="L346"></a><tt class="py-lineno"> 346</tt> <a class="py-toggle" href="#" id="verifyURL-toggle" onclick="return toggle('verifyURL');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#verifyURL">verifyURL</a><tt class="py-op">(</tt><tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">hmac_key</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">hash_vars</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">user_signature</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="verifyURL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="verifyURL-expanded"><a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">    Verifies that a request's args &amp; vars have not been tampered with by the user</tt> </tt>
<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-docstring">    :param request: web2py's request object</tt> </tt>
<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-docstring">    :param hmac_key: the key to authenticate with, must be the same one previously</tt> </tt>
<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring">                    used when calling URL()</tt> </tt>
<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring">    :param hash_vars: which vars to include in our hashing. (Optional)</tt> </tt>
<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">                    Only uses the 1st value currently</tt> </tt>
<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-docstring">                    True (or undefined) means all, False none,</tt> </tt>
<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">                    an iterable just the specified keys</tt> </tt>
<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-docstring">    do not call directly. Use instead:</tt> </tt>
<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-docstring">    URL.verify(hmac_key='...')</tt> </tt>
<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring">    the key has to match the one used to generate the URL.</tt> </tt>
<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r = Storage()</tt> </tt>
<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; gv = Storage(p=(1,3),q=2,_signature='a32530f0d0caa80964bb92aad2bedf8a4486a31f')</tt> </tt>
<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r.update(dict(application='a', controller='c', function='f', extension='html'))</tt> </tt>
<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r['args'] = ['x', 'y', 'z']</tt> </tt>
<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r['get_vars'] = gv</tt> </tt>
<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; verifyURL(r, 'key')</tt> </tt>
<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">        True</tt> </tt>
<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; verifyURL(r, 'kay')</tt> </tt>
<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">        False</tt> </tt>
<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r.get_vars.p = (3, 1)</tt> </tt>
<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; verifyURL(r, 'key')</tt> </tt>
<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">        True</tt> </tt>
<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; r.get_vars.p = (3, 2)</tt> </tt>
<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; verifyURL(r, 'key')</tt> </tt>
<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">        False</tt> </tt>
<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"> </tt>
<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-60" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-60', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">get_vars</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'_signature'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> <tt class="py-comment"># no signature in the request URL</tt> </tt>
<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"> </tt>
<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">    <tt class="py-comment"># check if user_signature requires</tt> </tt>
<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">user_signature</tt><tt class="py-op">:</tt> </tt>
<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-61" class="py-name"><a title="web2py.gluon.globals" class="py-name" href="#" onclick="return doclink('link-61', 'globals', 'link-23');">globals</a></tt> <tt class="py-keyword">import</tt> <tt id="link-62" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-62', 'current', 'link-24');">current</a></tt> </tt>
<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-63" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-63', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-64', 'session', 'link-44');">session</a></tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt id="link-65" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-65', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-66', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">:</tt> </tt>
<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-name">hmac_key</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-67', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-68', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">hmac_key</tt> </tt>
<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hmac_key</tt><tt class="py-op">:</tt> </tt>
<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"> </tt>
<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt class="py-comment"># get our sig from request.get_vars for later comparison</tt> </tt>
<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">original_sig</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-69', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">get_vars</tt><tt class="py-op">.</tt><tt class="py-name">_signature</tt> </tt>
<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"> </tt>
<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">    <tt class="py-comment"># now generate a new hmac for the remaining args &amp; vars</tt> </tt>
<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">vars</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt id="link-70" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-70', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">get_vars</tt><tt class="py-op">,</tt> <tt id="link-71" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-71', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">args</tt> </tt>
<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"> </tt>
<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    <tt class="py-comment"># remove the signature var since it was not part of our signed message</tt> </tt>
<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-72" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-72', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">get_vars</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'_signature'</tt><tt class="py-op">)</tt> </tt>
<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"> </tt>
<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">    <tt class="py-comment"># join all the args &amp; vars into one long string</tt> </tt>
<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">    <tt class="py-comment"># always include all of the args</tt> </tt>
<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-73', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-74', 'x', 'link-31');">x</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-75" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-75', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt class="py-name">h_args</tt> <tt class="py-op">=</tt> <tt class="py-string">'/%s/%s/%s.%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-76" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-76', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">application</tt><tt class="py-op">,</tt> </tt>
<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">                                 <tt id="link-77" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-77', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> </tt>
<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                                 <tt id="link-78" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-78', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">function</tt><tt class="py-op">,</tt> </tt>
<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">                                 <tt id="link-79" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-79', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">extension</tt><tt class="py-op">,</tt> </tt>
<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">                                 <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"> </tt>
<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">    <tt class="py-comment"># but only include those vars specified (allows more flexibility for use with</tt> </tt>
<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># forms or ajax)</tt> </tt>
<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">    <tt class="py-name">list_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">vals</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">vars</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">            <tt class="py-name">vals</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">vals</tt><tt class="py-op">]</tt> </tt>
<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">vals</tt><tt class="py-op">:</tt> </tt>
<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">            <tt class="py-name">list_vars</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-80', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"> </tt>
<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">    <tt class="py-comment"># which of the vars are to be included?</tt> </tt>
<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt>       <tt class="py-comment"># include them all</tt> </tt>
<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-name">list_vars</tt> </tt>
<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt>    <tt class="py-comment"># include none of them</tt> </tt>
<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt>                       <tt class="py-comment"># include just those specified</tt> </tt>
<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">        <tt class="py-comment"># wrap in a try - if the desired vars have been removed it'll fail</tt> </tt>
<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hash_vars</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">hash_vars</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">                <tt class="py-name">hash_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">hash_vars</tt><tt class="py-op">]</tt> </tt>
<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">            <tt class="py-name">h_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_vars</tt> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">hash_vars</tt><tt class="py-op">]</tt> </tt>
<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">            <tt class="py-comment"># user has removed one of our vars! Immediate fail</tt> </tt>
<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">    <tt class="py-comment"># build the full message string with both args &amp; vars</tt> </tt>
<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-81" class="py-name"><a title="web2py.gluon.http.HTTP.message" class="py-name" href="#" onclick="return doclink('link-81', 'message', 'link-47');">message</a></tt> <tt class="py-op">=</tt> <tt class="py-name">h_args</tt> <tt class="py-op">+</tt> <tt class="py-string">'?'</tt> <tt class="py-op">+</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">h_vars</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"> </tt>
<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">    <tt class="py-comment"># hash with the hmac_key provided</tt> </tt>
<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="web2py.gluon.utils.hmac_hash" class="py-name" href="#" onclick="return doclink('link-82', 'hmac_hash', 'link-11');">hmac_hash</a></tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="web2py.gluon.http.HTTP.message" class="py-name" href="#" onclick="return doclink('link-83', 'message', 'link-47');">message</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hmac_key</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">digest_alg</tt><tt class="py-op">=</tt><tt class="py-string">'sha1'</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">=</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt>
<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"> </tt>
<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">    <tt class="py-comment"># put _signature back in get_vars just in case a second call to URL.verify is performed</tt> </tt>
<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (otherwise it'll immediately return false)</tt> </tt>
<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-84" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-84', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">get_vars</tt><tt class="py-op">[</tt><tt class="py-string">'_signature'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">original_sig</tt> </tt>
<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">    <tt class="py-comment"># return whether or not the signature in the request matched the one we just generated</tt> </tt>
<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (I.E. was the message the same as the one we originally signed)</tt> </tt>
<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">original_sig</tt> <tt class="py-op">==</tt> <tt class="py-name">sig</tt> </tt>
</div><a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"> </tt>
<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt id="link-85" class="py-name" targets="Function web2py.gluon.html.URL()=web2py.gluon.html-module.html#URL"><a title="web2py.gluon.html.URL" class="py-name" href="#" onclick="return doclink('link-85', 'URL', 'link-85');">URL</a></tt><tt class="py-op">.</tt><tt class="py-name">verify</tt> <tt class="py-op">=</tt> <tt id="link-86" class="py-name" targets="Function web2py.gluon.html.verifyURL()=web2py.gluon.html-module.html#verifyURL"><a title="web2py.gluon.html.verifyURL" class="py-name" href="#" onclick="return doclink('link-86', 'verifyURL', 'link-86');">verifyURL</a></tt> </tt>
<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"> </tt>
<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt id="link-87" class="py-name" targets="Variable web2py.gluon.ON=web2py.gluon-module.html#ON,Method web2py.gluon.dal.BaseAdapter.ON()=web2py.gluon.dal.BaseAdapter-class.html#ON,Method web2py.gluon.dal.MongoDBAdapter.ON()=web2py.gluon.dal.MongoDBAdapter-class.html#ON,Method web2py.gluon.dal.NoSQLAdapter.ON()=web2py.gluon.dal.NoSQLAdapter-class.html#ON,Variable web2py.gluon.html.ON=web2py.gluon.html-module.html#ON,Variable web2py.gluon.tools.ON=web2py.gluon.tools-module.html#ON"><a title="web2py.gluon.ON
web2py.gluon.dal.BaseAdapter.ON
web2py.gluon.dal.MongoDBAdapter.ON
web2py.gluon.dal.NoSQLAdapter.ON
web2py.gluon.html.ON
web2py.gluon.tools.ON" class="py-name" href="#" onclick="return doclink('link-87', 'ON', 'link-87');">ON</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"> </tt>
<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"> </tt>
<a name="XmlComponent"></a><div id="XmlComponent-def"><a name="L456"></a><tt class="py-lineno"> 456</tt> <a class="py-toggle" href="#" id="XmlComponent-toggle" onclick="return toggle('XmlComponent');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.XmlComponent-class.html">XmlComponent</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XmlComponent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XmlComponent-expanded"><a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-docstring">    Abstract root for all Html components</tt> </tt>
<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"> </tt>
<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">    <tt class="py-comment"># TODO: move some DIV methods to here</tt> </tt>
<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="XmlComponent.xml"></a><div id="XmlComponent.xml-def"><a name="L463"></a><tt class="py-lineno"> 463</tt> <a class="py-toggle" href="#" id="XmlComponent.xml-toggle" onclick="return toggle('XmlComponent.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XmlComponent-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XmlComponent.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XmlComponent.xml-expanded"><a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt> </tt>
</div></div><a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"> </tt>
<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"> </tt>
<a name="XML"></a><div id="XML-def"><a name="L467"></a><tt class="py-lineno"> 467</tt> <a class="py-toggle" href="#" id="XML-toggle" onclick="return toggle('XML');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html">XML</a><tt class="py-op">(</tt><tt class="py-base-class">XmlComponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XML-expanded"><a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring">    use it to wrap a string that contains XML/HTML so that it will not be</tt> </tt>
<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">    escaped by the template</tt> </tt>
<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-docstring">    example:</tt> </tt>
<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; XML('&lt;h1&gt;Hello&lt;/h1&gt;').xml()</tt> </tt>
<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-docstring">    '&lt;h1&gt;Hello&lt;/h1&gt;'</tt> </tt>
<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"> </tt>
<a name="XML.__init__"></a><div id="XML.__init__-def"><a name="L478"></a><tt class="py-lineno"> 478</tt> <a class="py-toggle" href="#" id="XML.__init__-toggle" onclick="return toggle('XML.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__init__">__init__</a><tt class="py-op">(</tt> </tt>
<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">        <tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-param">text</tt><tt class="py-op">,</tt> </tt>
<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-param">sanitize</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">        <tt class="py-param">permitted_tags</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">            <tt class="py-string">'a'</tt><tt class="py-op">,</tt> </tt>
<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            <tt class="py-string">'b'</tt><tt class="py-op">,</tt> </tt>
<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">            <tt class="py-string">'blockquote'</tt><tt class="py-op">,</tt> </tt>
<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">            <tt class="py-string">'br/'</tt><tt class="py-op">,</tt> </tt>
<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">            <tt class="py-string">'i'</tt><tt class="py-op">,</tt> </tt>
<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-string">'li'</tt><tt class="py-op">,</tt> </tt>
<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">            <tt class="py-string">'ol'</tt><tt class="py-op">,</tt> </tt>
<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">            <tt class="py-string">'ul'</tt><tt class="py-op">,</tt> </tt>
<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">            <tt class="py-string">'p'</tt><tt class="py-op">,</tt> </tt>
<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">            <tt class="py-string">'cite'</tt><tt class="py-op">,</tt> </tt>
<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">            <tt class="py-string">'code'</tt><tt class="py-op">,</tt> </tt>
<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">            <tt class="py-string">'pre'</tt><tt class="py-op">,</tt> </tt>
<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">            <tt class="py-string">'img/'</tt><tt class="py-op">,</tt> </tt>
<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">            <tt class="py-string">'h1'</tt><tt class="py-op">,</tt><tt class="py-string">'h2'</tt><tt class="py-op">,</tt><tt class="py-string">'h3'</tt><tt class="py-op">,</tt><tt class="py-string">'h4'</tt><tt class="py-op">,</tt><tt class="py-string">'h5'</tt><tt class="py-op">,</tt><tt class="py-string">'h6'</tt><tt class="py-op">,</tt> </tt>
<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">            <tt class="py-string">'table'</tt><tt class="py-op">,</tt><tt class="py-string">'tr'</tt><tt class="py-op">,</tt><tt class="py-string">'td'</tt><tt class="py-op">,</tt><tt class="py-string">'div'</tt><tt class="py-op">,</tt> </tt>
<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-param">allowed_attributes</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">            <tt class="py-string">'a'</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-string">'href'</tt><tt class="py-op">,</tt> <tt class="py-string">'title'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">            <tt class="py-string">'img'</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-string">'src'</tt><tt class="py-op">,</tt> <tt class="py-string">'alt'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">            <tt class="py-string">'blockquote'</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">            <tt class="py-string">'td'</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-string">'colspan'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">            <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__init__-expanded"><a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">        :param text: the XML text</tt> </tt>
<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring">        :param sanitize: sanitize text using the permitted tags and allowed</tt> </tt>
<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">            attributes (default False)</tt> </tt>
<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        :param permitted_tags: list of permitted tags (default: simple list of</tt> </tt>
<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">            tags)</tt> </tt>
<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">        :param allowed_attributes: dictionary of allowed attributed (default</tt> </tt>
<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">            for A, IMG and BlockQuote).</tt> </tt>
<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">            The key is the tag; the value is a list of allowed attributes.</tt> </tt>
<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"> </tt>
<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-88" class="py-name" targets="Function web2py.gluon.sanitizer.sanitize()=web2py.gluon.sanitizer-module.html#sanitize"><a title="web2py.gluon.sanitizer.sanitize" class="py-name" href="#" onclick="return doclink('link-88', 'sanitize', 'link-88');">sanitize</a></tt><tt class="py-op">:</tt> </tt>
<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">            <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="web2py.gluon.sanitizer" class="py-name" href="#" onclick="return doclink('link-89', 'sanitizer', 'link-1');">sanitizer</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="web2py.gluon.sanitizer.sanitize" class="py-name" href="#" onclick="return doclink('link-90', 'sanitize', 'link-88');">sanitize</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">permitted_tags</tt><tt class="py-op">,</tt> </tt>
<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">                    <tt class="py-name">allowed_attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">            <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-91', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt> </tt>
<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">            <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
</div><a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"> </tt>
<a name="XML.xml"></a><div id="XML.xml-def"><a name="L526"></a><tt class="py-lineno"> 526</tt> <a class="py-toggle" href="#" id="XML.xml-toggle" onclick="return toggle('XML.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.xml-expanded"><a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
</div><a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"> </tt>
<a name="XML.__str__"></a><div id="XML.__str__-def"><a name="L529"></a><tt class="py-lineno"> 529</tt> <a class="py-toggle" href="#" id="XML.__str__-toggle" onclick="return toggle('XML.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__str__-expanded"><a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-92', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
<a name="XML.__add__"></a><div id="XML.__add__-def"><a name="L532"></a><tt class="py-lineno"> 532</tt> <a class="py-toggle" href="#" id="XML.__add__-toggle" onclick="return toggle('XML.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__add__">__add__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__add__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__add__-expanded"><a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
</div><a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"> </tt>
<a name="XML.__radd__"></a><div id="XML.__radd__-def"><a name="L535"></a><tt class="py-lineno"> 535</tt> <a class="py-toggle" href="#" id="XML.__radd__-toggle" onclick="return toggle('XML.__radd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__radd__">__radd__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__radd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__radd__-expanded"><a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div><a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"> </tt>
<a name="XML.__cmp__"></a><div id="XML.__cmp__-def"><a name="L538"></a><tt class="py-lineno"> 538</tt> <a class="py-toggle" href="#" id="XML.__cmp__-toggle" onclick="return toggle('XML.__cmp__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__cmp__">__cmp__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__cmp__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__cmp__-expanded"><a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"> </tt>
<a name="XML.__hash__"></a><div id="XML.__hash__-def"><a name="L541"></a><tt class="py-lineno"> 541</tt> <a class="py-toggle" href="#" id="XML.__hash__-toggle" onclick="return toggle('XML.__hash__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__hash__-expanded"><a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"> </tt>
<a name="XML.__getattr__"></a><div id="XML.__getattr__-def"><a name="L544"></a><tt class="py-lineno"> 544</tt> <a class="py-toggle" href="#" id="XML.__getattr__-toggle" onclick="return toggle('XML.__getattr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__getattr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__getattr__-expanded"><a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-93" class="py-name" targets="Variable web2py.gluon.import_all.name=web2py.gluon.import_all-module.html#name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-93', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
<a name="XML.__getitem__"></a><div id="XML.__getitem__-def"><a name="L547"></a><tt class="py-lineno"> 547</tt> <a class="py-toggle" href="#" id="XML.__getitem__-toggle" onclick="return toggle('XML.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">i</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__getitem__-expanded"><a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
</div><a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"> </tt>
<a name="XML.__getslice__"></a><div id="XML.__getslice__-def"><a name="L550"></a><tt class="py-lineno"> 550</tt> <a class="py-toggle" href="#" id="XML.__getslice__-toggle" onclick="return toggle('XML.__getslice__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__getslice__">__getslice__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">i</tt><tt class="py-op">,</tt><tt class="py-param">j</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__getslice__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__getslice__-expanded"><a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">j</tt><tt class="py-op">]</tt> </tt>
</div><a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"> </tt>
<a name="XML.__iter__"></a><div id="XML.__iter__-def"><a name="L553"></a><tt class="py-lineno"> 553</tt> <a class="py-toggle" href="#" id="XML.__iter__-toggle" onclick="return toggle('XML.__iter__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__iter__">__iter__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__iter__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__iter__-expanded"><a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">yield</tt> <tt class="py-name">c</tt> </tt>
</div><a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"> </tt>
<a name="XML.__len__"></a><div id="XML.__len__-def"><a name="L556"></a><tt class="py-lineno"> 556</tt> <a class="py-toggle" href="#" id="XML.__len__-toggle" onclick="return toggle('XML.__len__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#__len__">__len__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.__len__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.__len__-expanded"><a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-94" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-94', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"> </tt>
<a name="XML.flatten"></a><div id="XML.flatten-def"><a name="L559"></a><tt class="py-lineno"> 559</tt> <a class="py-toggle" href="#" id="XML.flatten-toggle" onclick="return toggle('XML.flatten');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#flatten">flatten</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">render</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.flatten-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.flatten-expanded"><a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        return the text stored by the XML object rendered by the render function</tt> </tt>
<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-95" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-95', 'render', 'link-4');">render</a></tt><tt class="py-op">:</tt> </tt>
<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-96" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-96', 'render', 'link-4');">render</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
</div><a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"> </tt>
<a name="XML.elements"></a><div id="XML.elements-def"><a name="L567"></a><tt class="py-lineno"> 567</tt> <a class="py-toggle" href="#" id="XML.elements-toggle" onclick="return toggle('XML.elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XML-class.html#elements">elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML.elements-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XML.elements-expanded"><a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring">        to be considered experimental since the behavior of this method is questionable</tt> </tt>
<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-docstring">        another options could be TAG(self.text).elements(*args,**kargs)</tt> </tt>
<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
</div></div><a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"> </tt>
<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-comment">### important to allow safe session.flash=T(....)</tt> </tt>
<a name="XML_unpickle"></a><div id="XML_unpickle-def"><a name="L575"></a><tt class="py-lineno"> 575</tt> <a class="py-toggle" href="#" id="XML_unpickle-toggle" onclick="return toggle('XML_unpickle');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#XML_unpickle">XML_unpickle</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML_unpickle-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XML_unpickle-expanded"><a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">marshal</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
</div><a name="XML_pickle"></a><div id="XML_pickle-def"><a name="L577"></a><tt class="py-lineno"> 577</tt> <a class="py-toggle" href="#" id="XML_pickle-toggle" onclick="return toggle('XML_pickle');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#XML_pickle">XML_pickle</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XML_pickle-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XML_pickle-expanded"><a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-97" class="py-name" targets="Function web2py.gluon.html.XML_unpickle()=web2py.gluon.html-module.html#XML_unpickle"><a title="web2py.gluon.html.XML_unpickle" class="py-name" href="#" onclick="return doclink('link-97', 'XML_unpickle', 'link-97');">XML_unpickle</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">marshal</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
</div><a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-name">copy_reg</tt><tt class="py-op">.</tt><tt class="py-name">pickle</tt><tt class="py-op">(</tt><tt id="link-98" class="py-name" targets="Class web2py.gluon.html.XML=web2py.gluon.html.XML-class.html"><a title="web2py.gluon.html.XML" class="py-name" href="#" onclick="return doclink('link-98', 'XML', 'link-98');">XML</a></tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name" targets="Function web2py.gluon.html.XML_pickle()=web2py.gluon.html-module.html#XML_pickle"><a title="web2py.gluon.html.XML_pickle" class="py-name" href="#" onclick="return doclink('link-99', 'XML_pickle', 'link-99');">XML_pickle</a></tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name"><a title="web2py.gluon.html.XML_unpickle" class="py-name" href="#" onclick="return doclink('link-100', 'XML_unpickle', 'link-97');">XML_unpickle</a></tt><tt class="py-op">)</tt> </tt>
<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"> </tt>
<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"> </tt>
<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"> </tt>
<a name="DIV"></a><div id="DIV-def"><a name="L583"></a><tt class="py-lineno"> 583</tt> <a class="py-toggle" href="#" id="DIV-toggle" onclick="return toggle('DIV');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html">DIV</a><tt class="py-op">(</tt><tt class="py-base-class">XmlComponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DIV-expanded"><a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">    HTML helper, for easy generating and manipulating a DOM structure.</tt> </tt>
<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">    Little or no validation is done.</tt> </tt>
<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">    Behaves like a dictionary regarding updating of attributes.</tt> </tt>
<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">    Behaves like a list regarding inserting/appending components.</tt> </tt>
<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; DIV('hello', 'world', _style='color:red;').xml()</tt> </tt>
<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;div style=\"color:red;\"&gt;helloworld&lt;/div&gt;'</tt> </tt>
<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-docstring">    all other HTML helpers are derived from DIV.</tt> </tt>
<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-docstring">    _something=\"value\" attributes are transparently translated into</tt> </tt>
<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring">    something=\"value\" HTML attributes</tt> </tt>
<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"> </tt>
<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">    <tt class="py-comment"># name of the tag, subclasses should update this</tt> </tt>
<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># tags ending with a '/' denote classes that cannot</tt> </tt>
<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># contain components</tt> </tt>
<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-101" class="py-name" targets="Variable web2py.gluon.html.A.tag=web2py.gluon.html.A-class.html#tag,Variable web2py.gluon.html.B.tag=web2py.gluon.html.B-class.html#tag,Variable web2py.gluon.html.BEAUTIFY.tag=web2py.gluon.html.BEAUTIFY-class.html#tag,Variable web2py.gluon.html.BODY.tag=web2py.gluon.html.BODY-class.html#tag,Variable web2py.gluon.html.BR.tag=web2py.gluon.html.BR-class.html#tag,Variable web2py.gluon.html.BUTTON.tag=web2py.gluon.html.BUTTON-class.html#tag,Variable web2py.gluon.html.CAT.tag=web2py.gluon.html.CAT-class.html#tag,Variable web2py.gluon.html.CENTER.tag=web2py.gluon.html.CENTER-class.html#tag,Variable web2py.gluon.html.COL.tag=web2py.gluon.html.COL-class.html#tag,Variable web2py.gluon.html.COLGROUP.tag=web2py.gluon.html.COLGROUP-class.html#tag,Variable web2py.gluon.html.DIV.tag=web2py.gluon.html.DIV-class.html#tag,Variable web2py.gluon.html.EM.tag=web2py.gluon.html.EM-class.html#tag,Variable web2py.gluon.html.EMBED.tag=web2py.gluon.html.EMBED-class.html#tag,Variable web2py.gluon.html.FIELDSET.tag=web2py.gluon.html.FIELDSET-class.html#tag,Variable web2py.gluon.html.FORM.tag=web2py.gluon.html.FORM-class.html#tag,Variable web2py.gluon.html.H1.tag=web2py.gluon.html.H1-class.html#tag,Variable web2py.gluon.html.H2.tag=web2py.gluon.html.H2-class.html#tag,Variable web2py.gluon.html.H3.tag=web2py.gluon.html.H3-class.html#tag,Variable web2py.gluon.html.H4.tag=web2py.gluon.html.H4-class.html#tag,Variable web2py.gluon.html.H5.tag=web2py.gluon.html.H5-class.html#tag,Variable web2py.gluon.html.H6.tag=web2py.gluon.html.H6-class.html#tag,Variable web2py.gluon.html.HEAD.tag=web2py.gluon.html.HEAD-class.html#tag,Variable web2py.gluon.html.HR.tag=web2py.gluon.html.HR-class.html#tag,Variable web2py.gluon.html.HTML.tag=web2py.gluon.html.HTML-class.html#tag,Variable web2py.gluon.html.I.tag=web2py.gluon.html.I-class.html#tag,Variable web2py.gluon.html.IFRAME.tag=web2py.gluon.html.IFRAME-class.html#tag,Variable web2py.gluon.html.IMG.tag=web2py.gluon.html.IMG-class.html#tag,Variable web2py.gluon.html.INPUT.tag=web2py.gluon.html.INPUT-class.html#tag,Variable web2py.gluon.html.LABEL.tag=web2py.gluon.html.LABEL-class.html#tag,Variable web2py.gluon.html.LEGEND.tag=web2py.gluon.html.LEGEND-class.html#tag,Variable web2py.gluon.html.LI.tag=web2py.gluon.html.LI-class.html#tag,Variable web2py.gluon.html.LINK.tag=web2py.gluon.html.LINK-class.html#tag,Variable web2py.gluon.html.MENU.tag=web2py.gluon.html.MENU-class.html#tag,Variable web2py.gluon.html.META.tag=web2py.gluon.html.META-class.html#tag,Variable web2py.gluon.html.OBJECT.tag=web2py.gluon.html.OBJECT-class.html#tag,Variable web2py.gluon.html.OL.tag=web2py.gluon.html.OL-class.html#tag,Variable web2py.gluon.html.OPTGROUP.tag=web2py.gluon.html.OPTGROUP-class.html#tag,Variable web2py.gluon.html.OPTION.tag=web2py.gluon.html.OPTION-class.html#tag,Variable web2py.gluon.html.P.tag=web2py.gluon.html.P-class.html#tag,Variable web2py.gluon.html.PRE.tag=web2py.gluon.html.PRE-class.html#tag,Variable web2py.gluon.html.SCRIPT.tag=web2py.gluon.html.SCRIPT-class.html#tag,Variable web2py.gluon.html.SELECT.tag=web2py.gluon.html.SELECT-class.html#tag,Variable web2py.gluon.html.SPAN.tag=web2py.gluon.html.SPAN-class.html#tag,Variable web2py.gluon.html.STYLE.tag=web2py.gluon.html.STYLE-class.html#tag,Variable web2py.gluon.html.TABLE.tag=web2py.gluon.html.TABLE-class.html#tag,Variable web2py.gluon.html.TBODY.tag=web2py.gluon.html.TBODY-class.html#tag,Variable web2py.gluon.html.TD.tag=web2py.gluon.html.TD-class.html#tag,Variable web2py.gluon.html.TEXTAREA.tag=web2py.gluon.html.TEXTAREA-class.html#tag,Variable web2py.gluon.html.TFOOT.tag=web2py.gluon.html.TFOOT-class.html#tag,Variable web2py.gluon.html.TH.tag=web2py.gluon.html.TH-class.html#tag,Variable web2py.gluon.html.THEAD.tag=web2py.gluon.html.THEAD-class.html#tag,Variable web2py.gluon.html.TITLE.tag=web2py.gluon.html.TITLE-class.html#tag,Variable web2py.gluon.html.TR.tag=web2py.gluon.html.TR-class.html#tag,Variable web2py.gluon.html.TT.tag=web2py.gluon.html.TT-class.html#tag,Variable web2py.gluon.html.UL.tag=web2py.gluon.html.UL-class.html#tag,Variable web2py.gluon.html.XHTML.tag=web2py.gluon.html.XHTML-class.html#tag"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-101', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"> </tt>
<a name="DIV.__init__"></a><div id="DIV.__init__-def"><a name="L607"></a><tt class="py-lineno"> 607</tt> <a class="py-toggle" href="#" id="DIV.__init__-toggle" onclick="return toggle('DIV.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">components</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">attributes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__init__-expanded"><a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">        :param *components: any components that should be nested in this element</tt> </tt>
<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">        :param **attributes: any attributes you want to give to this element</tt> </tt>
<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-docstring">        :raises SyntaxError: when a stand alone tag receives components</tt> </tt>
<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"> </tt>
<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-102', 'tag', 'link-101');">tag</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt class="py-string">'&lt;%s&gt; tags cannot have components'</tt>\ </tt>
<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                 <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-103', 'tag', 'link-101');">tag</a></tt> </tt>
<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-104" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-104', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">components</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt><tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">components</tt><tt class="py-op">)</tt> </tt>
<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt> </tt>
<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Method web2py.gluon.html.DIV._fixup()=web2py.gluon.html.DIV-class.html#_fixup,Method web2py.gluon.html.OPTGROUP._fixup()=web2py.gluon.html.OPTGROUP-class.html#_fixup,Method web2py.gluon.html.OPTION._fixup()=web2py.gluon.html.OPTION-class.html#_fixup,Method web2py.gluon.html.SELECT._fixup()=web2py.gluon.html.SELECT-class.html#_fixup,Method web2py.gluon.html.TABLE._fixup()=web2py.gluon.html.TABLE-class.html#_fixup,Method web2py.gluon.html.TBODY._fixup()=web2py.gluon.html.TBODY-class.html#_fixup,Method web2py.gluon.html.TFOOT._fixup()=web2py.gluon.html.TFOOT-class.html#_fixup,Method web2py.gluon.html.THEAD._fixup()=web2py.gluon.html.THEAD-class.html#_fixup,Method web2py.gluon.html.TR._fixup()=web2py.gluon.html.TR-class.html#_fixup,Method web2py.gluon.html.UL._fixup()=web2py.gluon.html.UL-class.html#_fixup"><a title="web2py.gluon.html.DIV._fixup
web2py.gluon.html.OPTGROUP._fixup
web2py.gluon.html.OPTION._fixup
web2py.gluon.html.SELECT._fixup
web2py.gluon.html.TABLE._fixup
web2py.gluon.html.TBODY._fixup
web2py.gluon.html.TFOOT._fixup
web2py.gluon.html.THEAD._fixup
web2py.gluon.html.TR._fixup
web2py.gluon.html.UL._fixup" class="py-name" href="#" onclick="return doclink('link-105', '_fixup', 'link-105');">_fixup</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-comment"># converts special attributes in components attributes</tt> </tt>
<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method web2py.gluon.html.DIV._postprocessing()=web2py.gluon.html.DIV-class.html#_postprocessing,Method web2py.gluon.html.FORM._postprocessing()=web2py.gluon.html.FORM-class.html#_postprocessing,Method web2py.gluon.html.INPUT._postprocessing()=web2py.gluon.html.INPUT-class.html#_postprocessing,Method web2py.gluon.html.SELECT._postprocessing()=web2py.gluon.html.SELECT-class.html#_postprocessing,Method web2py.gluon.html.TEXTAREA._postprocessing()=web2py.gluon.html.TEXTAREA-class.html#_postprocessing"><a title="web2py.gluon.html.DIV._postprocessing
web2py.gluon.html.FORM._postprocessing
web2py.gluon.html.INPUT._postprocessing
web2py.gluon.html.SELECT._postprocessing
web2py.gluon.html.TEXTAREA._postprocessing" class="py-name" href="#" onclick="return doclink('link-106', '_postprocessing', 'link-106');">_postprocessing</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method web2py.gluon.html.DIV._setnode()=web2py.gluon.html.DIV-class.html#_setnode"><a title="web2py.gluon.html.DIV._setnode" class="py-name" href="#" onclick="return doclink('link-107', '_setnode', 'link-107');">_setnode</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
</div><a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"> </tt>
<a name="DIV.update"></a><div id="DIV.update-def"><a name="L630"></a><tt class="py-lineno"> 630</tt> <a class="py-toggle" href="#" id="DIV.update-toggle" onclick="return toggle('DIV.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.update-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.update-expanded"><a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">        dictionary like updating of the tag attributes</tt> </tt>
<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"> </tt>
<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kargs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
</div><a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"> </tt>
<a name="DIV.append"></a><div id="DIV.append-def"><a name="L639"></a><tt class="py-lineno"> 639</tt> <a class="py-toggle" href="#" id="DIV.append-toggle" onclick="return toggle('DIV.append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#append">append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.append-expanded"><a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">        list style appending of components</tt> </tt>
<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=DIV()</tt> </tt>
<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a.append(SPAN('x'))</tt> </tt>
<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; print a</tt> </tt>
<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;div&gt;&lt;span&gt;x&lt;/span&gt;&lt;/div&gt;</tt> </tt>
<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="web2py.gluon.html.DIV._setnode" class="py-name" href="#" onclick="return doclink('link-108', '_setnode', 'link-107');">_setnode</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-109', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="web2py.gluon.html.DIV._fixup
web2py.gluon.html.OPTGROUP._fixup
web2py.gluon.html.OPTION._fixup
web2py.gluon.html.SELECT._fixup
web2py.gluon.html.TABLE._fixup
web2py.gluon.html.TBODY._fixup
web2py.gluon.html.TFOOT._fixup
web2py.gluon.html.THEAD._fixup
web2py.gluon.html.TR._fixup
web2py.gluon.html.UL._fixup" class="py-name" href="#" onclick="return doclink('link-110', '_fixup', 'link-105');">_fixup</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
</div><a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"> </tt>
<a name="DIV.insert"></a><div id="DIV.insert-def"><a name="L653"></a><tt class="py-lineno"> 653</tt> <a class="py-toggle" href="#" id="DIV.insert-toggle" onclick="return toggle('DIV.insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#insert">insert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.insert-expanded"><a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"><tt class="py-docstring">        list style inserting of components</tt> </tt>
<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=DIV()</tt> </tt>
<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a.insert(0,SPAN('x'))</tt> </tt>
<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; print a</tt> </tt>
<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;div&gt;&lt;span&gt;x&lt;/span&gt;&lt;/div&gt;</tt> </tt>
<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="web2py.gluon.html.DIV._setnode" class="py-name" href="#" onclick="return doclink('link-111', '_setnode', 'link-107');">_setnode</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method web2py.gluon.dal.BaseAdapter.insert()=web2py.gluon.dal.BaseAdapter-class.html#insert,Method web2py.gluon.dal.CouchDBAdapter.insert()=web2py.gluon.dal.CouchDBAdapter-class.html#insert,Method web2py.gluon.dal.GoogleDatastoreAdapter.insert()=web2py.gluon.dal.GoogleDatastoreAdapter-class.html#insert,Method web2py.gluon.dal.MongoDBAdapter.insert()=web2py.gluon.dal.MongoDBAdapter-class.html#insert,Method web2py.gluon.dal.Table.insert()=web2py.gluon.dal.Table-class.html#insert,Method web2py.gluon.html.DIV.insert()=web2py.gluon.html.DIV-class.html#insert,Method web2py.gluon.template.Content.insert()=web2py.gluon.template.Content-class.html#insert"><a title="web2py.gluon.dal.BaseAdapter.insert
web2py.gluon.dal.CouchDBAdapter.insert
web2py.gluon.dal.GoogleDatastoreAdapter.insert
web2py.gluon.dal.MongoDBAdapter.insert
web2py.gluon.dal.Table.insert
web2py.gluon.html.DIV.insert
web2py.gluon.template.Content.insert" class="py-name" href="#" onclick="return doclink('link-112', 'insert', 'link-112');">insert</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="web2py.gluon.html.DIV._fixup
web2py.gluon.html.OPTGROUP._fixup
web2py.gluon.html.OPTION._fixup
web2py.gluon.html.SELECT._fixup
web2py.gluon.html.TABLE._fixup
web2py.gluon.html.TBODY._fixup
web2py.gluon.html.TFOOT._fixup
web2py.gluon.html.THEAD._fixup
web2py.gluon.html.TR._fixup
web2py.gluon.html.UL._fixup" class="py-name" href="#" onclick="return doclink('link-113', '_fixup', 'link-105');">_fixup</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
</div><a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"> </tt>
<a name="DIV.__getitem__"></a><div id="DIV.__getitem__-def"><a name="L667"></a><tt class="py-lineno"> 667</tt> <a class="py-toggle" href="#" id="DIV.__getitem__-toggle" onclick="return toggle('DIV.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__getitem__-expanded"><a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-docstring">        gets attribute with name 'i' or component #i.</tt> </tt>
<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-docstring">        If attribute 'i' is not found returns None</tt> </tt>
<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-docstring">        :param i: index</tt> </tt>
<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-docstring">           if i is a string: the name of the attribute</tt> </tt>
<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-docstring">           otherwise references to number of the component</tt> </tt>
<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"> </tt>
<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
</div><a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"> </tt>
<a name="DIV.__setitem__"></a><div id="DIV.__setitem__-def"><a name="L685"></a><tt class="py-lineno"> 685</tt> <a class="py-toggle" href="#" id="DIV.__setitem__-toggle" onclick="return toggle('DIV.__setitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__setitem__-expanded"><a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">        sets attribute with name 'i' or component #i.</tt> </tt>
<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">        :param i: index</tt> </tt>
<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">           if i is a string: the name of the attribute</tt> </tt>
<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">           otherwise references to number of the component</tt> </tt>
<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">        :param value: the new value</tt> </tt>
<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="web2py.gluon.html.DIV._setnode" class="py-name" href="#" onclick="return doclink('link-114', '_setnode', 'link-107');">_setnode</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
</div><a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"> </tt>
<a name="DIV.__delitem__"></a><div id="DIV.__delitem__-def"><a name="L700"></a><tt class="py-lineno"> 700</tt> <a class="py-toggle" href="#" id="DIV.__delitem__-toggle" onclick="return toggle('DIV.__delitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__delitem__">__delitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">i</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__delitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__delitem__-expanded"><a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">        deletes attribute with name 'i' or component #i.</tt> </tt>
<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">        :param i: index</tt> </tt>
<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">           if i is a string: the name of the attribute</tt> </tt>
<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">           otherwise references to number of the component</tt> </tt>
<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
</div><a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"> </tt>
<a name="DIV.__len__"></a><div id="DIV.__len__-def"><a name="L714"></a><tt class="py-lineno"> 714</tt> <a class="py-toggle" href="#" id="DIV.__len__-toggle" onclick="return toggle('DIV.__len__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__len__">__len__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__len__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__len__-expanded"><a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring">        returns the number of included components</tt> </tt>
<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-115" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-115', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">)</tt> </tt>
</div><a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"> </tt>
<a name="DIV.__nonzero__"></a><div id="DIV.__nonzero__-def"><a name="L720"></a><tt class="py-lineno"> 720</tt> <a class="py-toggle" href="#" id="DIV.__nonzero__-toggle" onclick="return toggle('DIV.__nonzero__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__nonzero__">__nonzero__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__nonzero__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__nonzero__-expanded"><a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-docstring">        always return True</tt> </tt>
<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
</div><a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"> </tt>
<a name="DIV._fixup"></a><div id="DIV._fixup-def"><a name="L726"></a><tt class="py-lineno"> 726</tt> <a class="py-toggle" href="#" id="DIV._fixup-toggle" onclick="return toggle('DIV._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._fixup-expanded"><a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-docstring">        Handling of provided components.</tt> </tt>
<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-docstring">        Nothing to fixup yet. May be overridden by subclasses,</tt> </tt>
<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-docstring">        eg for wrapping some components in another component or blocking them.</tt> </tt>
<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
</div><a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"> </tt>
<a name="DIV._wrap_components"></a><div id="DIV._wrap_components-def"><a name="L735"></a><tt class="py-lineno"> 735</tt> <a class="py-toggle" href="#" id="DIV._wrap_components-toggle" onclick="return toggle('DIV._wrap_components');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_wrap_components">_wrap_components</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">allowed_parents</tt><tt class="py-op">,</tt> </tt>
<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">                         <tt class="py-param">wrap_parent</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">                         <tt class="py-param">wrap_lambda</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._wrap_components-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._wrap_components-expanded"><a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">        helper for _fixup. Checks if a component is in allowed_parents,</tt> </tt>
<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">        otherwise wraps it in wrap_parent</tt> </tt>
<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">        :param allowed_parents: (tuple) classes that the component should be an</tt> </tt>
<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">            instance of</tt> </tt>
<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">        :param wrap_parent: the class to wrap the component in, if needed</tt> </tt>
<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">        :param wrap_lambda: lambda to use for wrapping, if needed</tt> </tt>
<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">        <tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">allowed_parents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">wrap_lambda</tt><tt class="py-op">:</tt> </tt>
<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">wrap_lambda</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">wrap_parent</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt id="link-116" class="py-name" targets="Method web2py.gluon.dal.BaseAdapter.DIV()=web2py.gluon.dal.BaseAdapter-class.html#DIV,Method web2py.gluon.dal.MongoDBAdapter.DIV()=web2py.gluon.dal.MongoDBAdapter-class.html#DIV,Method web2py.gluon.dal.NoSQLAdapter.DIV()=web2py.gluon.dal.NoSQLAdapter-class.html#DIV,Class web2py.gluon.html.DIV=web2py.gluon.html.DIV-class.html"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-116', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">            <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-117', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">components</tt> </tt>
</div><a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"> </tt>
<a name="DIV._postprocessing"></a><div id="DIV._postprocessing-def"><a name="L761"></a><tt class="py-lineno"> 761</tt> <a class="py-toggle" href="#" id="DIV._postprocessing-toggle" onclick="return toggle('DIV._postprocessing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_postprocessing">_postprocessing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._postprocessing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._postprocessing-expanded"><a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"><tt class="py-docstring">        Handling of attributes (normally the ones not prefixed with '_').</tt> </tt>
<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-docstring">        Nothing to postprocess yet. May be overridden by subclasses</tt> </tt>
<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
</div><a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"> </tt>
<a name="DIV._traverse"></a><div id="DIV._traverse-def"><a name="L769"></a><tt class="py-lineno"> 769</tt> <a class="py-toggle" href="#" id="DIV._traverse-toggle" onclick="return toggle('DIV._traverse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_traverse">_traverse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">status</tt><tt class="py-op">,</tt> <tt class="py-param">hideerror</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._traverse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._traverse-expanded"><a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: docstring</tt> </tt>
<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">newstatus</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'_traverse'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method web2py.gluon.html.DIV._traverse()=web2py.gluon.html.DIV-class.html#_traverse"><a title="web2py.gluon.html.DIV._traverse" class="py-name" href="#" onclick="return doclink('link-118', '_traverse', 'link-118');">_traverse</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt> </tt>
<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt> </tt>
<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt> </tt>
<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">latest</tt> </tt>
<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-119', 'session', 'link-44');">session</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-120', 'session', 'link-44');">session</a></tt> </tt>
<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt> </tt>
<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'hideerror'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">hideerror</tt> </tt>
<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">                <tt class="py-name">newstatus</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="web2py.gluon.html.DIV._traverse" class="py-name" href="#" onclick="return doclink('link-121', '_traverse', 'link-118');">_traverse</a></tt><tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt><tt class="py-name">hideerror</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">newstatus</tt> </tt>
<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"> </tt>
<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt class="py-comment"># for input, textarea, select, option</tt> </tt>
<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># deal with 'value' and 'validation'</tt> </tt>
<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt id="link-122" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-122', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_name'</tt><tt class="py-op">]</tt> </tt>
<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">newstatus</tt><tt class="py-op">:</tt> </tt>
<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">            <tt class="py-name">newstatus</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method web2py.gluon.dal.Table._validate()=web2py.gluon.dal.Table-class.html#_validate,Method web2py.gluon.html.DIV._validate()=web2py.gluon.html.DIV-class.html#_validate,Method web2py.gluon.html.INPUT._validate()=web2py.gluon.html.INPUT-class.html#_validate,Method web2py.gluon.tools.Recaptcha._validate()=web2py.gluon.tools.Recaptcha-class.html#_validate"><a title="web2py.gluon.dal.Table._validate
web2py.gluon.html.DIV._validate
web2py.gluon.html.INPUT._validate
web2py.gluon.tools.Recaptcha._validate" class="py-name" href="#" onclick="return doclink('link-123', '_validate', 'link-123');">_validate</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="web2py.gluon.html.DIV._postprocessing
web2py.gluon.html.FORM._postprocessing
web2py.gluon.html.INPUT._postprocessing
web2py.gluon.html.SELECT._postprocessing
web2py.gluon.html.TEXTAREA._postprocessing" class="py-name" href="#" onclick="return doclink('link-124', '_postprocessing', 'link-106');">_postprocessing</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-string">'old_value'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'old_value'</tt><tt class="py-op">]</tt> </tt>
<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="web2py.gluon.html.DIV._postprocessing
web2py.gluon.html.FORM._postprocessing
web2py.gluon.html.INPUT._postprocessing
web2py.gluon.html.SELECT._postprocessing
web2py.gluon.html.TEXTAREA._postprocessing" class="py-name" href="#" onclick="return doclink('link-125', '_postprocessing', 'link-106');">_postprocessing</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-126" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-126', 'name', 'link-93');">name</a></tt> <tt class="py-keyword">and</tt> <tt id="link-127" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-127', 'name', 'link-93');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">:</tt> </tt>
<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">[</tt><tt id="link-128" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-128', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt> </tt>
<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="web2py.gluon.html.DIV._postprocessing
web2py.gluon.html.FORM._postprocessing
web2py.gluon.html.INPUT._postprocessing
web2py.gluon.html.SELECT._postprocessing
web2py.gluon.html.TEXTAREA._postprocessing" class="py-name" href="#" onclick="return doclink('link-129', '_postprocessing', 'link-106');">_postprocessing</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-130" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-130', 'name', 'link-93');">name</a></tt><tt class="py-op">:</tt> </tt>
<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">latest</tt><tt class="py-op">[</tt><tt id="link-131" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-131', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> </tt>
<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">newstatus</tt> </tt>
</div><a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"> </tt>
<a name="DIV._validate"></a><div id="DIV._validate-def"><a name="L800"></a><tt class="py-lineno"> 800</tt> <a class="py-toggle" href="#" id="DIV._validate-toggle" onclick="return toggle('DIV._validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._validate-expanded"><a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-docstring">        nothing to validate yet. May be overridden by subclasses</tt> </tt>
<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
</div><a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"> </tt>
<a name="DIV._setnode"></a><div id="DIV._setnode-def"><a name="L806"></a><tt class="py-lineno"> 806</tt> <a class="py-toggle" href="#" id="DIV._setnode-toggle" onclick="return toggle('DIV._setnode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_setnode">_setnode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._setnode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._setnode-expanded"><a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt id="link-132" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-132', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">            <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
</div><a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
<a name="DIV._xml"></a><div id="DIV._xml-def"><a name="L810"></a><tt class="py-lineno"> 810</tt> <a class="py-toggle" href="#" id="DIV._xml-toggle" onclick="return toggle('DIV._xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#_xml">_xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV._xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV._xml-expanded"><a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-docstring">        helper for xml generation. Returns separately:</tt> </tt>
<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-docstring">        - the component attributes</tt> </tt>
<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-docstring">        - the generated xml of the inner components</tt> </tt>
<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-docstring">        Component attributes start with an underscore ('_') and</tt> </tt>
<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-docstring">        do not have a False or None value. The underscore is removed.</tt> </tt>
<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-docstring">        A value of True is replaced with the attribute name.</tt> </tt>
<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-docstring">        :returns: tuple: (attributes, components)</tt> </tt>
<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"> </tt>
<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">        <tt class="py-comment"># get the attributes for this component</tt> </tt>
<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (they start with '_', others may have special meanings)</tt> </tt>
<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">fa</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'_'</tt><tt class="py-op">:</tt> </tt>
<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">            <tt id="link-133" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-133', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-134', 'name', 'link-93');">name</a></tt> </tt>
<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt> <tt class="py-keyword">or</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">            <tt class="py-name">fa</tt> <tt class="py-op">+=</tt> <tt class="py-string">' %s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-135', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name" targets="Function web2py.gluon.html.xmlescape()=web2py.gluon.html-module.html#xmlescape"><a title="web2py.gluon.html.xmlescape" class="py-name" href="#" onclick="return doclink('link-136', 'xmlescape', 'link-136');">xmlescape</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"> </tt>
<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-comment"># get the xml for the inner components</tt> </tt>
<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">co</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-137', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-138" class="py-name"><a title="web2py.gluon.html.xmlescape" class="py-name" href="#" onclick="return doclink('link-138', 'xmlescape', 'link-136');">xmlescape</a></tt><tt class="py-op">(</tt><tt class="py-name">component</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">component</tt> <tt class="py-keyword">in</tt> </tt>
<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">                     <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"> </tt>
<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> </tt>
</div><a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"> </tt>
<a name="DIV.xml"></a><div id="DIV.xml-def"><a name="L843"></a><tt class="py-lineno"> 843</tt> <a class="py-toggle" href="#" id="DIV.xml-toggle" onclick="return toggle('DIV.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.xml-expanded"><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt class="py-docstring">        generates the xml for this component.</tt> </tt>
<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method web2py.gluon.html.DIV._xml()=web2py.gluon.html.DIV-class.html#_xml"><a title="web2py.gluon.html.DIV._xml" class="py-name" href="#" onclick="return doclink('link-139', '_xml', 'link-139');">_xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"> </tt>
<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-140', 'tag', 'link-101');">tag</a></tt><tt class="py-op">:</tt> </tt>
<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">co</tt> </tt>
<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"> </tt>
<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-141', 'tag', 'link-101');">tag</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">            <tt class="py-comment"># &lt;tag [attributes] /&gt;</tt> </tt>
<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s%s /&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-142', 'tag', 'link-101');">tag</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">)</tt> </tt>
<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"> </tt>
<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt class="py-comment"># else: &lt;tag [attributes]&gt;  inner components xml &lt;/tag&gt;</tt> </tt>
<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s%s&gt;%s&lt;/%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-143', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-144', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"> </tt>
<a name="DIV.__str__"></a><div id="DIV.__str__-def"><a name="L860"></a><tt class="py-lineno"> 860</tt> <a class="py-toggle" href="#" id="DIV.__str__-toggle" onclick="return toggle('DIV.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.__str__-expanded"><a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">        str(COMPONENT) returns equals COMPONENT.xml()</tt> </tt>
<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"> </tt>
<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-145', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"> </tt>
<a name="DIV.flatten"></a><div id="DIV.flatten-def"><a name="L867"></a><tt class="py-lineno"> 867</tt> <a class="py-toggle" href="#" id="DIV.flatten-toggle" onclick="return toggle('DIV.flatten');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#flatten">flatten</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">render</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.flatten-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.flatten-expanded"><a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">        return the text stored by the DIV object rendered by the render function</tt> </tt>
<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">        the render function must take text, tagname, and attributes</tt> </tt>
<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">        render=None is equivalent to render=lambda text, tag, attr: text</tt> </tt>
<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; markdown = lambda text,tag=None,attributes={}: \</tt> </tt>
<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">                        {None: re.sub('\s+',' ',text), \</tt> </tt>
<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">                         'h1':'#'+text+'\\n\\n', \</tt> </tt>
<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">                         'p':text+'\\n'}.get(tag,text)</tt> </tt>
<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=TAG('&lt;h1&gt;Header&lt;/h1&gt;&lt;p&gt;this is a     test&lt;/p&gt;')</tt> </tt>
<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a.flatten(markdown)</tt> </tt>
<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">        '#Header\\n\\nthis is a test\\n'</tt> </tt>
<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt id="link-146" class="py-name" targets="Class web2py.gluon.html.XmlComponent=web2py.gluon.html.XmlComponent-class.html"><a title="web2py.gluon.html.XmlComponent" class="py-name" href="#" onclick="return doclink('link-146', 'XmlComponent', 'link-146');">XmlComponent</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">                <tt id="link-147" class="py-name" targets="Variable web2py.gluon.languages.lazyT.s=web2py.gluon.languages.lazyT-class.html#s"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-147', 's', 'link-147');">s</a></tt><tt class="py-op">=</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method web2py.gluon.html.DIV.flatten()=web2py.gluon.html.DIV-class.html#flatten,Method web2py.gluon.html.MARKMIN.flatten()=web2py.gluon.html.MARKMIN-class.html#flatten,Method web2py.gluon.html.XML.flatten()=web2py.gluon.html.XML-class.html#flatten"><a title="web2py.gluon.html.DIV.flatten
web2py.gluon.html.MARKMIN.flatten
web2py.gluon.html.XML.flatten" class="py-name" href="#" onclick="return doclink('link-148', 'flatten', 'link-148');">flatten</a></tt><tt class="py-op">(</tt><tt id="link-149" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-149', 'render', 'link-4');">render</a></tt><tt class="py-op">)</tt> </tt>
<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-150" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-150', 'render', 'link-4');">render</a></tt><tt class="py-op">:</tt> </tt>
<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">                <tt id="link-151" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-151', 's', 'link-147');">s</a></tt><tt class="py-op">=</tt><tt id="link-152" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-152', 'render', 'link-4');">render</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">                <tt id="link-153" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-153', 's', 'link-147');">s</a></tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">            <tt class="py-name">text</tt><tt class="py-op">+=</tt><tt id="link-154" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-154', 's', 'link-147');">s</a></tt> </tt>
<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-155" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-155', 'render', 'link-4');">render</a></tt><tt class="py-op">:</tt> </tt>
<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">            <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-156', 'render', 'link-4');">render</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-157', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">text</tt> </tt>
</div><a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"> </tt>
<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">    <tt id="link-158" class="py-name" targets="Variable web2py.gluon.html.DIV.regex_tag=web2py.gluon.html.DIV-class.html#regex_tag"><a title="web2py.gluon.html.DIV.regex_tag" class="py-name" href="#" onclick="return doclink('link-158', 'regex_tag', 'link-158');">regex_tag</a></tt><tt class="py-op">=</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'^[\w\-\:]+'</tt><tt class="py-op">)</tt> </tt>
<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt id="link-159" class="py-name" targets="Variable web2py.gluon.html.DIV.regex_id=web2py.gluon.html.DIV-class.html#regex_id"><a title="web2py.gluon.html.DIV.regex_id" class="py-name" href="#" onclick="return doclink('link-159', 'regex_id', 'link-159');">regex_id</a></tt><tt class="py-op">=</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'#([\w\-]+)'</tt><tt class="py-op">)</tt> </tt>
<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">    <tt id="link-160" class="py-name" targets="Variable web2py.gluon.html.DIV.regex_class=web2py.gluon.html.DIV-class.html#regex_class"><a title="web2py.gluon.html.DIV.regex_class" class="py-name" href="#" onclick="return doclink('link-160', 'regex_class', 'link-160');">regex_class</a></tt><tt class="py-op">=</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'\.([\w\-]+)'</tt><tt class="py-op">)</tt> </tt>
<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">    <tt id="link-161" class="py-name" targets="Variable web2py.gluon.html.DIV.regex_attr=web2py.gluon.html.DIV-class.html#regex_attr"><a title="web2py.gluon.html.DIV.regex_attr" class="py-name" href="#" onclick="return doclink('link-161', 'regex_attr', 'link-161');">regex_attr</a></tt><tt class="py-op">=</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'\[([\w\-\:]+)=(.*?)\]'</tt><tt class="py-op">)</tt> </tt>
<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"> </tt>
<a name="DIV.elements"></a><div id="DIV.elements-def"><a name="L901"></a><tt class="py-lineno"> 901</tt> <a class="py-toggle" href="#" id="DIV.elements-toggle" onclick="return toggle('DIV.elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#elements">elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.elements-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.elements-expanded"><a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-docstring">        find all component that match the supplied attribute dictionary,</tt> </tt>
<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring">        or None if nothing could be found</tt> </tt>
<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-docstring">        All components of the components are searched.</tt> </tt>
<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a = DIV(DIV(SPAN('x'),3,DIV(SPAN('y'))))</tt> </tt>
<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; for c in a.elements('span',first_only=True): c[0]='z'</tt> </tt>
<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; print a</tt> </tt>
<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;div&gt;&lt;div&gt;&lt;span&gt;z&lt;/span&gt;3&lt;div&gt;&lt;span&gt;y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</tt> </tt>
<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; for c in a.elements('span'): c[0]='z'</tt> </tt>
<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; print a</tt> </tt>
<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;div&gt;&lt;div&gt;&lt;span&gt;z&lt;/span&gt;3&lt;div&gt;&lt;span&gt;z&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</tt> </tt>
<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">        It also supports a syntax compatible with jQuery</tt> </tt>
<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=TAG('&lt;div&gt;&lt;span&gt;&lt;a id="1-1" u:v=$&gt;hello&lt;/a&gt;&lt;/span&gt;&lt;p class="this is a test"&gt;world&lt;/p&gt;&lt;/div&gt;')</tt> </tt>
<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; for e in a.elements('div a#1-1, p.is'): print e.flatten()</tt> </tt>
<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"><tt class="py-docstring">        hello</tt> </tt>
<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-docstring">        world</tt> </tt>
<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; for e in a.elements('#1-1'): print e.flatten()</tt> </tt>
<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring">        hello</tt> </tt>
<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a.elements('a[u:v=$]')[0].xml()</tt> </tt>
<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;a id="1-1" u:v="$"&gt;hello&lt;/a&gt;'</tt> </tt>
<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a=FORM( INPUT(_type='text'), SELECT(range(1)), TEXTAREA() )</tt> </tt>
<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; for c in a.elements('input, select, textarea'): c['_disabled'] = 'disabled'</tt> </tt>
<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; a.xml()</tt> </tt>
<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;form action="" enctype="multipart/form-data" method="post"&gt;&lt;input disabled="disabled" type="text" /&gt;&lt;select disabled="disabled"&gt;&lt;option value="0"&gt;0&lt;/option&gt;&lt;/select&gt;&lt;textarea cols="40" disabled="disabled" rows="10"&gt;&lt;/textarea&gt;&lt;/form&gt;'</tt> </tt>
<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-162" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-162', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method web2py.gluon.sanitizer.XssCleaner.strip()=web2py.gluon.sanitizer.XssCleaner-class.html#strip"><a title="web2py.gluon.sanitizer.XssCleaner.strip" class="py-name" href="#" onclick="return doclink('link-163', 'strip', 'link-163');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-164" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-164', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">            <tt class="py-name">subset</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method web2py.gluon.html.DIV.elements()=web2py.gluon.html.DIV-class.html#elements,Method web2py.gluon.html.MARKMIN.elements()=web2py.gluon.html.MARKMIN-class.html#elements,Method web2py.gluon.html.XML.elements()=web2py.gluon.html.XML-class.html#elements"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-165', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kargs</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">]</tt> </tt>
<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt id="link-166" class="py-name" targets="Function web2py.gluon.rocket.b()=web2py.gluon.rocket-module.html#b"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-166', 'b', 'link-166');">b</a></tt><tt class="py-op">:</tt><tt class="py-name">a</tt><tt class="py-op">+</tt><tt id="link-167" class="py-name"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-167', 'b', 'link-166');">b</a></tt><tt class="py-op">,</tt><tt class="py-name">subset</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-168" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-168', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-169" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-169', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">                <tt class="py-name">subset</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-170', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-171', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kargs</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-172', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt id="link-173" class="py-name"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-173', 'b', 'link-166');">b</a></tt><tt class="py-op">:</tt><tt class="py-name">a</tt><tt class="py-op">+</tt><tt id="link-174" class="py-name"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-174', 'b', 'link-166');">b</a></tt><tt class="py-op">,</tt><tt class="py-name">subset</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">                <tt class="py-name">item</tt><tt class="py-op">=</tt><tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'#'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'.'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'['</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">                    <tt class="py-name">match_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="web2py.gluon.html.DIV.regex_tag" class="py-name" href="#" onclick="return doclink('link-175', 'regex_tag', 'link-158');">regex_tag</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-176', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">                    <tt class="py-name">match_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="web2py.gluon.html.DIV.regex_id" class="py-name" href="#" onclick="return doclink('link-177', 'regex_id', 'link-159');">regex_id</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-178', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">                    <tt class="py-name">match_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="web2py.gluon.html.DIV.regex_class" class="py-name" href="#" onclick="return doclink('link-179', 'regex_class', 'link-160');">regex_class</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-180', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">                    <tt class="py-name">match_attr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="web2py.gluon.html.DIV.regex_attr" class="py-name" href="#" onclick="return doclink('link-181', 'regex_attr', 'link-161');">regex_attr</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">                    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">match_tag</tt><tt class="py-op">:</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">match_tag</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">match_id</tt><tt class="py-op">:</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'_id'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_id</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">match_class</tt><tt class="py-op">:</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'(?&lt;!\w)%s(?!\w)'</tt> <tt class="py-op">%</tt> \ </tt>
<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">                       <tt class="py-name">match_class</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt><tt class="py-string">'\\-'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt><tt class="py-string">'\\:'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">match_attr</tt><tt class="py-op">:</tt> </tt>
<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                        <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'_'</tt><tt class="py-op">+</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-182', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kargs</tt><tt class="py-op">)</tt> </tt>
<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt class="py-comment"># make a copy of the components</tt> </tt>
<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt class="py-name">first_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">kargs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">"first_only"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">            <tt class="py-name">first_only</tt> <tt class="py-op">=</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">"first_only"</tt><tt class="py-op">]</tt> </tt>
<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">"first_only"</tt><tt class="py-op">]</tt> </tt>
<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-comment"># check if the component has an attribute with the same</tt> </tt>
<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># value as provided</tt> </tt>
<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt id="link-183" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-183', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt id="link-184" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-184', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">            <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kargs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">                    <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-185', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">                    <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'find'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kargs</tt><tt class="py-op">:</tt> </tt>
<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">            <tt id="link-186" class="py-name" targets="Method web2py.gluon.dal.Rows.find()=web2py.gluon.dal.Rows-class.html#find"><a title="web2py.gluon.dal.Rows.find" class="py-name" href="#" onclick="return doclink('link-186', 'find', 'link-186');">find</a></tt> <tt class="py-op">=</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'find'</tt><tt class="py-op">]</tt> </tt>
<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="web2py.gluon.dal.Rows.find" class="py-name" href="#" onclick="return doclink('link-187', 'find', 'link-186');">find</a></tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt><tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="web2py.gluon.dal.Rows.find" class="py-name" href="#" onclick="return doclink('link-188', 'find', 'link-186');">find</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">c</tt><tt class="py-op">:</tt> </tt>
<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">                        <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-189" class="py-name"><a title="web2py.gluon.dal.Rows.find" class="py-name" href="#" onclick="return doclink('link-189', 'find', 'link-186');">find</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="web2py.gluon.tools.Crud.search" class="py-name" href="#" onclick="return doclink('link-190', 'search', 'link-53');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">                        <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-comment"># if found, return the component</tt> </tt>
<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">check</tt><tt class="py-op">:</tt> </tt>
<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt class="py-name">matches</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-191', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">first_only</tt><tt class="py-op">:</tt> </tt>
<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">matches</tt> </tt>
<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">        <tt class="py-comment"># loop the copy</tt> </tt>
<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt id="link-192" class="py-name"><a title="web2py.gluon.html.XmlComponent" class="py-name" href="#" onclick="return doclink('link-192', 'XmlComponent', 'link-146');">XmlComponent</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">                <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'first_only'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">first_only</tt> </tt>
<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">                <tt class="py-name">child_matches</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-193', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt>  <tt class="py-op">**</tt><tt class="py-name">kargs</tt> <tt class="py-op">)</tt> </tt>
<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">first_only</tt>  <tt class="py-keyword">and</tt> <tt id="link-194" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-194', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">child_matches</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">child_matches</tt> </tt>
<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">                <tt class="py-name">matches</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Method web2py.gluon.template.BlockNode.extend()=web2py.gluon.template.BlockNode-class.html#extend,Method web2py.gluon.template.Content.extend()=web2py.gluon.template.Content-class.html#extend,Method web2py.gluon.template.TemplateParser.extend()=web2py.gluon.template.TemplateParser-class.html#extend"><a title="web2py.gluon.template.BlockNode.extend
web2py.gluon.template.Content.extend
web2py.gluon.template.TemplateParser.extend" class="py-name" href="#" onclick="return doclink('link-195', 'extend', 'link-195');">extend</a></tt><tt class="py-op">(</tt> <tt class="py-name">child_matches</tt> <tt class="py-op">)</tt> </tt>
<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">matches</tt> </tt>
</div><a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"> </tt>
<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"> </tt>
<a name="DIV.element"></a><div id="DIV.element-def"><a name="L1003"></a><tt class="py-lineno">1003</tt> <a class="py-toggle" href="#" id="DIV.element-toggle" onclick="return toggle('DIV.element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#element">element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.element-expanded"><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">        find the first component that matches the supplied attribute dictionary,</tt> </tt>
<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-docstring">        or None if nothing could be found</tt> </tt>
<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">        Also the components of the components are searched.</tt> </tt>
<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'first_only'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt id="link-196" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-196', 'elements', 'link-165');">elements</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-197', 'elements', 'link-165');">elements</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kargs</tt><tt class="py-op">)</tt> </tt>
<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-198" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-198', 'elements', 'link-165');">elements</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-comment"># we found nothing</tt> </tt>
<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-199" class="py-name"><a title="web2py.gluon.html.DIV.elements
web2py.gluon.html.MARKMIN.elements
web2py.gluon.html.XML.elements" class="py-name" href="#" onclick="return doclink('link-199', 'elements', 'link-165');">elements</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
</div><a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"> </tt>
<a name="DIV.siblings"></a><div id="DIV.siblings-def"><a name="L1017"></a><tt class="py-lineno">1017</tt> <a class="py-toggle" href="#" id="DIV.siblings-toggle" onclick="return toggle('DIV.siblings');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#siblings">siblings</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.siblings-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.siblings-expanded"><a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring">        find all sibling components that match the supplied argument list</tt> </tt>
<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">        and attribute dictionary, or None if nothing could be found</tt> </tt>
<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">        <tt class="py-name">sibs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-200" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-200', 's', 'link-147');">s</a></tt> <tt class="py-keyword">for</tt> <tt id="link-201" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-201', 's', 'link-147');">s</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-202" class="py-name"><a title="web2py.gluon.languages.lazyT.s" class="py-name" href="#" onclick="return doclink('link-202', 's', 'link-147');">s</a></tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">]</tt> </tt>
<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">        <tt class="py-name">first_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">kargs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">"first_only"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">            <tt class="py-name">first_only</tt> <tt class="py-op">=</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">"first_only"</tt><tt class="py-op">]</tt> </tt>
<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">"first_only"</tt><tt class="py-op">]</tt> </tt>
<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sibs</tt><tt class="py-op">:</tt> </tt>
<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">                <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">                <tt id="link-203" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-203', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt id="link-204" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-204', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                        <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kargs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                            <tt class="py-name">check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">check</tt><tt class="py-op">:</tt> </tt>
<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">                    <tt class="py-name">matches</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-205', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">first_only</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">matches</tt> </tt>
</div><a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"> </tt>
<a name="DIV.sibling"></a><div id="DIV.sibling-def"><a name="L1044"></a><tt class="py-lineno">1044</tt> <a class="py-toggle" href="#" id="DIV.sibling-toggle" onclick="return toggle('DIV.sibling');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.DIV-class.html#sibling">sibling</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="DIV.sibling-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DIV.sibling-expanded"><a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">        find the first sibling component that match the supplied argument list</tt> </tt>
<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">        and attribute dictionary, or None if nothing could be found</tt> </tt>
<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">        <tt class="py-name">kargs</tt><tt class="py-op">[</tt><tt class="py-string">'first_only'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-name">sibs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name" targets="Method web2py.gluon.html.DIV.siblings()=web2py.gluon.html.DIV-class.html#siblings"><a title="web2py.gluon.html.DIV.siblings" class="py-name" href="#" onclick="return doclink('link-206', 'siblings', 'link-206');">siblings</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kargs</tt><tt class="py-op">)</tt> </tt>
<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sibs</tt><tt class="py-op">:</tt> </tt>
<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">sibs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
</div></div><a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"> </tt>
<a name="CAT"></a><div id="CAT-def"><a name="L1055"></a><tt class="py-lineno">1055</tt> <a class="py-toggle" href="#" id="CAT-toggle" onclick="return toggle('CAT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.CAT-class.html">CAT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="CAT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CAT-expanded"><a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"> </tt>
<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">    <tt id="link-207" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-207', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
</div><a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"> </tt>
<a name="TAG_unpickler"></a><div id="TAG_unpickler-def"><a name="L1059"></a><tt class="py-lineno">1059</tt> <a class="py-toggle" href="#" id="TAG_unpickler-toggle" onclick="return toggle('TAG_unpickler');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#TAG_unpickler">TAG_unpickler</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TAG_unpickler-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TAG_unpickler-expanded"><a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">cPickle</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"> </tt>
<a name="TAG_pickler"></a><div id="TAG_pickler-def"><a name="L1062"></a><tt class="py-lineno">1062</tt> <a class="py-toggle" href="#" id="TAG_pickler-toggle" onclick="return toggle('TAG_pickler');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#TAG_pickler">TAG_pickler</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TAG_pickler-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TAG_pickler-expanded"><a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-208', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">    <tt class="py-name">d</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> </tt>
<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-name">marshal_dump</tt> <tt class="py-op">=</tt> <tt class="py-name">cPickle</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-209" class="py-name" targets="Function web2py.gluon.html.TAG_unpickler()=web2py.gluon.html-module.html#TAG_unpickler"><a title="web2py.gluon.html.TAG_unpickler" class="py-name" href="#" onclick="return doclink('link-209', 'TAG_unpickler', 'link-209');">TAG_unpickler</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">marshal_dump</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"> </tt>
<a name="__TAG__"></a><div id="__TAG__-def"><a name="L1068"></a><tt class="py-lineno">1068</tt> <a class="py-toggle" href="#" id="__TAG__-toggle" onclick="return toggle('__TAG__');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.__TAG__-class.html">__TAG__</a><tt class="py-op">(</tt><tt class="py-base-class">XmlComponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="__TAG__-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="__TAG__-expanded"><a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"> </tt>
<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-docstring">    TAG factory example::</tt> </tt>
<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; print TAG.first(TAG.second('test'), _key = 3)</tt> </tt>
<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;first key=\"3\"&gt;&lt;second&gt;test&lt;/second&gt;&lt;/first&gt;</tt> </tt>
<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"> </tt>
<a name="__TAG__.__getitem__"></a><div id="__TAG__.__getitem__-def"><a name="L1078"></a><tt class="py-lineno">1078</tt> <a class="py-toggle" href="#" id="__TAG__.__getitem__-toggle" onclick="return toggle('__TAG__.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.__TAG__-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="__TAG__.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="__TAG__.__getitem__-expanded"><a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method web2py.gluon.dal.DAL.__getattr__()=web2py.gluon.dal.DAL-class.html#__getattr__,Method web2py.gluon.dal.Reference.__getattr__()=web2py.gluon.dal.Reference-class.html#__getattr__,Method web2py.gluon.dal.Row.__getattr__()=web2py.gluon.dal.Row-class.html#__getattr__,Method web2py.gluon.dal.Table.__getattr__()=web2py.gluon.dal.Table-class.html#__getattr__,Method web2py.gluon.html.XML.__getattr__()=web2py.gluon.html.XML-class.html#__getattr__,Method web2py.gluon.html.__TAG__.__getattr__()=web2py.gluon.html.__TAG__-class.html#__getattr__,Method web2py.gluon.languages.lazyT.__getattr__()=web2py.gluon.languages.lazyT-class.html#__getattr__,Method web2py.gluon.storage.Messages.__getattr__()=web2py.gluon.storage.Messages-class.html#__getattr__,Method web2py.gluon.storage.Storage.__getattr__()=web2py.gluon.storage.Storage-class.html#__getattr__,Method web2py.gluon.storage.StorageList.__getattr__()=web2py.gluon.storage.StorageList-class.html#__getattr__,Method web2py.gluon.tools.PluginManager.__getattr__()=web2py.gluon.tools.PluginManager-class.html#__getattr__"><a title="web2py.gluon.dal.DAL.__getattr__
web2py.gluon.dal.Reference.__getattr__
web2py.gluon.dal.Row.__getattr__
web2py.gluon.dal.Table.__getattr__
web2py.gluon.html.XML.__getattr__
web2py.gluon.html.__TAG__.__getattr__
web2py.gluon.languages.lazyT.__getattr__
web2py.gluon.storage.Messages.__getattr__
web2py.gluon.storage.Storage.__getattr__
web2py.gluon.storage.StorageList.__getattr__
web2py.gluon.tools.PluginManager.__getattr__" class="py-name" href="#" onclick="return doclink('link-210', '__getattr__', 'link-210');">__getattr__</a></tt><tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-211', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"> </tt>
<a name="__TAG__.__getattr__"></a><div id="__TAG__.__getattr__-def"><a name="L1081"></a><tt class="py-lineno">1081</tt> <a class="py-toggle" href="#" id="__TAG__.__getattr__-toggle" onclick="return toggle('__TAG__.__getattr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.__TAG__-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="__TAG__.__getattr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="__TAG__.__getattr__-expanded"><a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-212" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-212', 'name', 'link-93');">name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'_'</tt><tt class="py-op">:</tt> </tt>
<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">            <tt id="link-213" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-213', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-214', 'name', 'link-93');">name</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> </tt>
<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-215" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-215', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">            <tt id="link-216" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-216', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-217" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-217', 'name', 'link-93');">name</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-218', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">__tag__</tt><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt id="link-219" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-219', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-220', 'name', 'link-93');">name</a></tt> </tt>
</div><a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">        <tt class="py-name">copy_reg</tt><tt class="py-op">.</tt><tt class="py-name">pickle</tt><tt class="py-op">(</tt><tt class="py-name">__tag__</tt><tt class="py-op">,</tt> <tt id="link-221" class="py-name" targets="Function web2py.gluon.html.TAG_pickler()=web2py.gluon.html-module.html#TAG_pickler"><a title="web2py.gluon.html.TAG_pickler" class="py-name" href="#" onclick="return doclink('link-221', 'TAG_pickler', 'link-221');">TAG_pickler</a></tt><tt class="py-op">,</tt> <tt id="link-222" class="py-name"><a title="web2py.gluon.html.TAG_unpickler" class="py-name" href="#" onclick="return doclink('link-222', 'TAG_unpickler', 'link-209');">TAG_unpickler</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-keyword">lambda</tt> <tt class="py-op">*</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-223" class="py-name"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-223', 'b', 'link-166');">b</a></tt><tt class="py-op">:</tt> <tt class="py-name">__tag__</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-224" class="py-name"><a title="web2py.gluon.rocket.b" class="py-name" href="#" onclick="return doclink('link-224', 'b', 'link-166');">b</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
<a name="__TAG__.__call__"></a><div id="__TAG__.__call__-def"><a name="L1091"></a><tt class="py-lineno">1091</tt> <a class="py-toggle" href="#" id="__TAG__.__call__-toggle" onclick="return toggle('__TAG__.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.__TAG__-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">html</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="__TAG__.__call__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="__TAG__.__call__-expanded"><a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-225" class="py-name" targets="Class web2py.gluon.html.web2pyHTMLParser=web2py.gluon.html.web2pyHTMLParser-class.html"><a title="web2py.gluon.html.web2pyHTMLParser" class="py-name" href="#" onclick="return doclink('link-225', 'web2pyHTMLParser', 'link-225');">web2pyHTMLParser</a></tt><tt class="py-op">(</tt><tt id="link-226" class="py-name"><a title="web2py.gluon.decoder
web2py.gluon.decoder.decoder" class="py-name" href="#" onclick="return doclink('link-226', 'decoder', 'link-3');">decoder</a></tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="web2py.gluon.decoder
web2py.gluon.decoder.decoder" class="py-name" href="#" onclick="return doclink('link-227', 'decoder', 'link-3');">decoder</a></tt><tt class="py-op">(</tt><tt id="link-228" class="py-name" targets="Module web2py.gluon.html=web2py.gluon.html-module.html"><a title="web2py.gluon.html" class="py-name" href="#" onclick="return doclink('link-228', 'html', 'link-228');">html</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">tree</tt> </tt>
</div></div><a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"> </tt>
<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt id="link-229" class="py-name" targets="Variable web2py.gluon.TAG=web2py.gluon-module.html#TAG,Variable web2py.gluon.html.TAG=web2py.gluon.html-module.html#TAG,Variable web2py.gluon.tools.TAG=web2py.gluon.tools-module.html#TAG"><a title="web2py.gluon.TAG
web2py.gluon.html.TAG
web2py.gluon.tools.TAG" class="py-name" href="#" onclick="return doclink('link-229', 'TAG', 'link-229');">TAG</a></tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name" targets="Class web2py.gluon.html.__TAG__=web2py.gluon.html.__TAG__-class.html"><a title="web2py.gluon.html.__TAG__" class="py-name" href="#" onclick="return doclink('link-230', '__TAG__', 'link-230');">__TAG__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"> </tt>
<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"> </tt>
<a name="HTML"></a><div id="HTML-def"><a name="L1097"></a><tt class="py-lineno">1097</tt> <a class="py-toggle" href="#" id="HTML-toggle" onclick="return toggle('HTML');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.HTML-class.html">HTML</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="HTML-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HTML-expanded"><a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring">    There are four predefined document type definitions.</tt> </tt>
<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring">    They can be specified in the 'doctype' parameter:</tt> </tt>
<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring">    -'strict' enables strict doctype</tt> </tt>
<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring">    -'transitional' enables transitional doctype (default)</tt> </tt>
<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring">    -'frameset' enables frameset doctype</tt> </tt>
<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-docstring">    -'html5' enables HTML 5 doctype</tt> </tt>
<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-docstring">    -any other string will be treated as user's own doctype</tt> </tt>
<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-docstring">    'lang' parameter specifies the language of the document.</tt> </tt>
<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-docstring">    Defaults to 'en'.</tt> </tt>
<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-docstring">    See also :class:`DIV`</tt> </tt>
<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"> </tt>
<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">    <tt id="link-231" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-231', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'html'</tt> </tt>
<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"> </tt>
<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">    <tt id="link-232" class="py-name" targets="Variable web2py.gluon.html.HTML.strict=web2py.gluon.html.HTML-class.html#strict,Variable web2py.gluon.html.XHTML.strict=web2py.gluon.html.XHTML-class.html#strict"><a title="web2py.gluon.html.HTML.strict
web2py.gluon.html.XHTML.strict" class="py-name" href="#" onclick="return doclink('link-232', 'strict', 'link-232');">strict</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;\n'</tt> </tt>
<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">    <tt id="link-233" class="py-name" targets="Variable web2py.gluon.html.HTML.transitional=web2py.gluon.html.HTML-class.html#transitional,Variable web2py.gluon.html.XHTML.transitional=web2py.gluon.html.XHTML-class.html#transitional"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-233', 'transitional', 'link-233');">transitional</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;\n'</tt> </tt>
<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">    <tt id="link-234" class="py-name" targets="Variable web2py.gluon.html.HTML.frameset=web2py.gluon.html.HTML-class.html#frameset,Variable web2py.gluon.html.XHTML.frameset=web2py.gluon.html.XHTML-class.html#frameset"><a title="web2py.gluon.html.HTML.frameset
web2py.gluon.html.XHTML.frameset" class="py-name" href="#" onclick="return doclink('link-234', 'frameset', 'link-234');">frameset</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"&gt;\n'</tt> </tt>
<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">    <tt id="link-235" class="py-name" targets="Variable web2py.gluon.html.HTML.html5=web2py.gluon.html.HTML-class.html#html5"><a title="web2py.gluon.html.HTML.html5" class="py-name" href="#" onclick="return doclink('link-235', 'html5', 'link-235');">html5</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE HTML&gt;\n'</tt> </tt>
<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"> </tt>
<a name="HTML.xml"></a><div id="HTML.xml-def"><a name="L1121"></a><tt class="py-lineno">1121</tt> <a class="py-toggle" href="#" id="HTML.xml-toggle" onclick="return toggle('HTML.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.HTML-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="HTML.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTML.xml-expanded"><a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'lang'</tt><tt class="py-op">]</tt> </tt>
<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">lang</tt><tt class="py-op">:</tt> </tt>
<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">            <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-string">'en'</tt> </tt>
<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_lang'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">lang</tt> </tt>
<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">        <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'doctype'</tt><tt class="py-op">]</tt> </tt>
<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doctype</tt><tt class="py-op">:</tt> </tt>
<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'strict'</tt><tt class="py-op">:</tt> </tt>
<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="web2py.gluon.html.HTML.strict
web2py.gluon.html.XHTML.strict" class="py-name" href="#" onclick="return doclink('link-236', 'strict', 'link-232');">strict</a></tt> </tt>
<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'transitional'</tt><tt class="py-op">:</tt> </tt>
<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-237', 'transitional', 'link-233');">transitional</a></tt> </tt>
<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'frameset'</tt><tt class="py-op">:</tt> </tt>
<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="web2py.gluon.html.HTML.frameset
web2py.gluon.html.XHTML.frameset" class="py-name" href="#" onclick="return doclink('link-238', 'frameset', 'link-234');">frameset</a></tt> </tt>
<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'html5'</tt><tt class="py-op">:</tt> </tt>
<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="web2py.gluon.html.HTML.html5" class="py-name" href="#" onclick="return doclink('link-239', 'html5', 'link-235');">html5</a></tt> </tt>
<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">doctype</tt> </tt>
<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">            <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-240', 'transitional', 'link-233');">transitional</a></tt> </tt>
<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="web2py.gluon.html.DIV._xml" class="py-name" href="#" onclick="return doclink('link-241', '_xml', 'link-139');">_xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s&lt;%s%s&gt;%s&lt;/%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">doctype</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-242', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-243', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"> </tt>
<a name="XHTML"></a><div id="XHTML-def"><a name="L1143"></a><tt class="py-lineno">1143</tt> <a class="py-toggle" href="#" id="XHTML-toggle" onclick="return toggle('XHTML');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.XHTML-class.html">XHTML</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XHTML-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XHTML-expanded"><a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">    This is XHTML version of the HTML helper.</tt> </tt>
<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring">    There are three predefined document type definitions.</tt> </tt>
<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">    They can be specified in the 'doctype' parameter:</tt> </tt>
<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">    -'strict' enables strict doctype</tt> </tt>
<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring">    -'transitional' enables transitional doctype (default)</tt> </tt>
<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-docstring">    -'frameset' enables frameset doctype</tt> </tt>
<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-docstring">    -any other string will be treated as user's own doctype</tt> </tt>
<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-docstring">    'lang' parameter specifies the language of the document and the xml document.</tt> </tt>
<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-docstring">    Defaults to 'en'.</tt> </tt>
<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-docstring">    'xmlns' parameter specifies the xml namespace.</tt> </tt>
<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-docstring">    Defaults to 'http://www.w3.org/1999/xhtml'.</tt> </tt>
<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">    See also :class:`DIV`</tt> </tt>
<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"> </tt>
<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">    <tt id="link-244" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-244', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'html'</tt> </tt>
<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"> </tt>
<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">    <tt id="link-245" class="py-name"><a title="web2py.gluon.html.HTML.strict
web2py.gluon.html.XHTML.strict" class="py-name" href="#" onclick="return doclink('link-245', 'strict', 'link-232');">strict</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;\n'</tt> </tt>
<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">    <tt id="link-246" class="py-name"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-246', 'transitional', 'link-233');">transitional</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;\n'</tt> </tt>
<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">    <tt id="link-247" class="py-name"><a title="web2py.gluon.html.HTML.frameset
web2py.gluon.html.XHTML.frameset" class="py-name" href="#" onclick="return doclink('link-247', 'frameset', 'link-234');">frameset</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;\n'</tt> </tt>
<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">    <tt id="link-248" class="py-name" targets="Variable web2py.gluon.html.XHTML.xmlns=web2py.gluon.html.XHTML-class.html#xmlns"><a title="web2py.gluon.html.XHTML.xmlns" class="py-name" href="#" onclick="return doclink('link-248', 'xmlns', 'link-248');">xmlns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.w3.org/1999/xhtml'</tt> </tt>
<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"> </tt>
<a name="XHTML.xml"></a><div id="XHTML.xml-def"><a name="L1171"></a><tt class="py-lineno">1171</tt> <a class="py-toggle" href="#" id="XHTML.xml-toggle" onclick="return toggle('XHTML.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.XHTML-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XHTML.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="XHTML.xml-expanded"><a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt id="link-249" class="py-name"><a title="web2py.gluon.html.XHTML.xmlns" class="py-name" href="#" onclick="return doclink('link-249', 'xmlns', 'link-248');">xmlns</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">]</tt> </tt>
<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-250" class="py-name"><a title="web2py.gluon.html.XHTML.xmlns" class="py-name" href="#" onclick="return doclink('link-250', 'xmlns', 'link-248');">xmlns</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_xmlns'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-251" class="py-name"><a title="web2py.gluon.html.XHTML.xmlns" class="py-name" href="#" onclick="return doclink('link-251', 'xmlns', 'link-248');">xmlns</a></tt> </tt>
<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_xmlns'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="web2py.gluon.html.XHTML.xmlns" class="py-name" href="#" onclick="return doclink('link-252', 'xmlns', 'link-248');">xmlns</a></tt> </tt>
<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">        <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'lang'</tt><tt class="py-op">]</tt> </tt>
<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">lang</tt><tt class="py-op">:</tt> </tt>
<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">            <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-string">'en'</tt> </tt>
<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_lang'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">lang</tt> </tt>
<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_xml:lang'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">lang</tt> </tt>
<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'doctype'</tt><tt class="py-op">]</tt> </tt>
<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doctype</tt><tt class="py-op">:</tt> </tt>
<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'strict'</tt><tt class="py-op">:</tt> </tt>
<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="web2py.gluon.html.HTML.strict
web2py.gluon.html.XHTML.strict" class="py-name" href="#" onclick="return doclink('link-253', 'strict', 'link-232');">strict</a></tt> </tt>
<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'transitional'</tt><tt class="py-op">:</tt> </tt>
<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-254', 'transitional', 'link-233');">transitional</a></tt> </tt>
<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doctype</tt> <tt class="py-op">==</tt> <tt class="py-string">'frameset'</tt><tt class="py-op">:</tt> </tt>
<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="web2py.gluon.html.HTML.frameset
web2py.gluon.html.XHTML.frameset" class="py-name" href="#" onclick="return doclink('link-255', 'frameset', 'link-234');">frameset</a></tt> </tt>
<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">                <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">doctype</tt> </tt>
<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">            <tt class="py-name">doctype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="web2py.gluon.html.HTML.transitional
web2py.gluon.html.XHTML.transitional" class="py-name" href="#" onclick="return doclink('link-256', 'transitional', 'link-233');">transitional</a></tt> </tt>
<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="web2py.gluon.html.DIV._xml" class="py-name" href="#" onclick="return doclink('link-257', '_xml', 'link-139');">_xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s&lt;%s%s&gt;%s&lt;/%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">doctype</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-258', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-259', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"> </tt>
<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"> </tt>
<a name="HEAD"></a><div id="HEAD-def"><a name="L1198"></a><tt class="py-lineno">1198</tt> <a class="py-toggle" href="#" id="HEAD-toggle" onclick="return toggle('HEAD');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.HEAD-class.html">HEAD</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="HEAD-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HEAD-expanded"><a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"> </tt>
<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">    <tt id="link-260" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-260', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'head'</tt> </tt>
</div><a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
<a name="TITLE"></a><div id="TITLE-def"><a name="L1202"></a><tt class="py-lineno">1202</tt> <a class="py-toggle" href="#" id="TITLE-toggle" onclick="return toggle('TITLE');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TITLE-class.html">TITLE</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TITLE-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TITLE-expanded"><a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"> </tt>
<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt id="link-261" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-261', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'title'</tt> </tt>
</div><a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"> </tt>
<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"> </tt>
<a name="META"></a><div id="META-def"><a name="L1207"></a><tt class="py-lineno">1207</tt> <a class="py-toggle" href="#" id="META-toggle" onclick="return toggle('META');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.META-class.html">META</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="META-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="META-expanded"><a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"> </tt>
<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt id="link-262" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-262', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'meta/'</tt> </tt>
</div><a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"> </tt>
<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt>
<a name="LINK"></a><div id="LINK-def"><a name="L1212"></a><tt class="py-lineno">1212</tt> <a class="py-toggle" href="#" id="LINK-toggle" onclick="return toggle('LINK');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.LINK-class.html">LINK</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="LINK-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LINK-expanded"><a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"> </tt>
<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">    <tt id="link-263" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-263', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'link/'</tt> </tt>
</div><a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"> </tt>
<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"> </tt>
<a name="SCRIPT"></a><div id="SCRIPT-def"><a name="L1217"></a><tt class="py-lineno">1217</tt> <a class="py-toggle" href="#" id="SCRIPT-toggle" onclick="return toggle('SCRIPT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.SCRIPT-class.html">SCRIPT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCRIPT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SCRIPT-expanded"><a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"> </tt>
<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">    <tt id="link-264" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-264', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'script'</tt> </tt>
<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"> </tt>
<a name="SCRIPT.xml"></a><div id="SCRIPT.xml-def"><a name="L1221"></a><tt class="py-lineno">1221</tt> <a class="py-toggle" href="#" id="SCRIPT.xml-toggle" onclick="return toggle('SCRIPT.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.SCRIPT-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCRIPT.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SCRIPT.xml-expanded"><a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="web2py.gluon.html.DIV._xml" class="py-name" href="#" onclick="return doclink('link-265', '_xml', 'link-139');">_xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">        <tt class="py-comment"># no escaping of subcomponents</tt> </tt>
<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">co</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-266', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">component</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">component</tt> <tt class="py-keyword">in</tt> </tt>
<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">                       <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">co</tt><tt class="py-op">:</tt> </tt>
<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">            <tt class="py-comment"># &lt;script [attributes]&gt;&lt;!--//--&gt;&lt;![CDATA[//&gt;&lt;!--</tt> </tt>
<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># script body</tt> </tt>
<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># //--&gt;&lt;!]]&gt;&lt;/script&gt;</tt> </tt>
<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># return '&lt;%s%s&gt;&lt;!--//--&gt;&lt;![CDATA[//&gt;&lt;!--\n%s\n//--&gt;&lt;!]]&gt;&lt;/%s&gt;' % (self.tag, fa, co, self.tag)</tt> </tt>
<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s%s&gt;&lt;!--\n%s\n//--&gt;&lt;/%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-267', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-268', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-269" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-269', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-270', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"> </tt>
<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"> </tt>
<a name="STYLE"></a><div id="STYLE-def"><a name="L1236"></a><tt class="py-lineno">1236</tt> <a class="py-toggle" href="#" id="STYLE-toggle" onclick="return toggle('STYLE');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.STYLE-class.html">STYLE</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="STYLE-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="STYLE-expanded"><a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"> </tt>
<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">    <tt id="link-271" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-271', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'style'</tt> </tt>
<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line"> </tt>
<a name="STYLE.xml"></a><div id="STYLE.xml-def"><a name="L1240"></a><tt class="py-lineno">1240</tt> <a class="py-toggle" href="#" id="STYLE.xml-toggle" onclick="return toggle('STYLE.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.STYLE-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="STYLE.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="STYLE.xml-expanded"><a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="web2py.gluon.html.DIV._xml" class="py-name" href="#" onclick="return doclink('link-272', '_xml', 'link-139');">_xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">        <tt class="py-comment"># no escaping of subcomponents</tt> </tt>
<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">co</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-273', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">component</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">component</tt> <tt class="py-keyword">in</tt> </tt>
<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">                       <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">co</tt><tt class="py-op">:</tt> </tt>
<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">            <tt class="py-comment"># &lt;style [attributes]&gt;&lt;!--/*--&gt;&lt;![CDATA[/*&gt;&lt;!--*/</tt> </tt>
<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># style body</tt> </tt>
<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># /*]]&gt;*/--&gt;&lt;/style&gt;</tt> </tt>
<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s%s&gt;&lt;!--/*--&gt;&lt;![CDATA[/*&gt;&lt;!--*/\n%s\n/*]]&gt;*/--&gt;&lt;/%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-274', 'tag', 'link-101');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">fa</tt><tt class="py-op">,</tt> <tt class="py-name">co</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-275', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-276" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-276', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-277', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"> </tt>
<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"> </tt>
<a name="IMG"></a><div id="IMG-def"><a name="L1254"></a><tt class="py-lineno">1254</tt> <a class="py-toggle" href="#" id="IMG-toggle" onclick="return toggle('IMG');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.IMG-class.html">IMG</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="IMG-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="IMG-expanded"><a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"> </tt>
<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">    <tt id="link-278" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-278', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'img/'</tt> </tt>
</div><a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"> </tt>
<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"> </tt>
<a name="SPAN"></a><div id="SPAN-def"><a name="L1259"></a><tt class="py-lineno">1259</tt> <a class="py-toggle" href="#" id="SPAN-toggle" onclick="return toggle('SPAN');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.SPAN-class.html">SPAN</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SPAN-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SPAN-expanded"><a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"> </tt>
<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">    <tt id="link-279" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-279', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'span'</tt> </tt>
</div><a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"> </tt>
<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line"> </tt>
<a name="BODY"></a><div id="BODY-def"><a name="L1264"></a><tt class="py-lineno">1264</tt> <a class="py-toggle" href="#" id="BODY-toggle" onclick="return toggle('BODY');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.BODY-class.html">BODY</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BODY-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BODY-expanded"><a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"> </tt>
<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">    <tt id="link-280" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-280', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'body'</tt> </tt>
</div><a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"> </tt>
<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"> </tt>
<a name="H1"></a><div id="H1-def"><a name="L1269"></a><tt class="py-lineno">1269</tt> <a class="py-toggle" href="#" id="H1-toggle" onclick="return toggle('H1');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H1-class.html">H1</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H1-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H1-expanded"><a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"> </tt>
<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">    <tt id="link-281" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-281', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h1'</tt> </tt>
</div><a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"> </tt>
<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"> </tt>
<a name="H2"></a><div id="H2-def"><a name="L1274"></a><tt class="py-lineno">1274</tt> <a class="py-toggle" href="#" id="H2-toggle" onclick="return toggle('H2');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H2-class.html">H2</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H2-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H2-expanded"><a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"> </tt>
<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">    <tt id="link-282" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-282', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h2'</tt> </tt>
</div><a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"> </tt>
<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"> </tt>
<a name="H3"></a><div id="H3-def"><a name="L1279"></a><tt class="py-lineno">1279</tt> <a class="py-toggle" href="#" id="H3-toggle" onclick="return toggle('H3');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H3-class.html">H3</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H3-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H3-expanded"><a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"> </tt>
<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">    <tt id="link-283" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-283', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h3'</tt> </tt>
</div><a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"> </tt>
<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"> </tt>
<a name="H4"></a><div id="H4-def"><a name="L1284"></a><tt class="py-lineno">1284</tt> <a class="py-toggle" href="#" id="H4-toggle" onclick="return toggle('H4');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H4-class.html">H4</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H4-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H4-expanded"><a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"> </tt>
<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">    <tt id="link-284" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-284', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h4'</tt> </tt>
</div><a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"> </tt>
<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"> </tt>
<a name="H5"></a><div id="H5-def"><a name="L1289"></a><tt class="py-lineno">1289</tt> <a class="py-toggle" href="#" id="H5-toggle" onclick="return toggle('H5');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H5-class.html">H5</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H5-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H5-expanded"><a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"> </tt>
<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">    <tt id="link-285" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-285', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h5'</tt> </tt>
</div><a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"> </tt>
<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"> </tt>
<a name="H6"></a><div id="H6-def"><a name="L1294"></a><tt class="py-lineno">1294</tt> <a class="py-toggle" href="#" id="H6-toggle" onclick="return toggle('H6');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.H6-class.html">H6</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="H6-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="H6-expanded"><a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"> </tt>
<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">    <tt id="link-286" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-286', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'h6'</tt> </tt>
</div><a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"> </tt>
<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"> </tt>
<a name="P"></a><div id="P-def"><a name="L1299"></a><tt class="py-lineno">1299</tt> <a class="py-toggle" href="#" id="P-toggle" onclick="return toggle('P');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.P-class.html">P</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="P-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="P-expanded"><a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">    Will replace ``\\n`` by ``&lt;br /&gt;`` if the `cr2br` attribute is provided.</tt> </tt>
<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-docstring">    see also :class:`DIV`</tt> </tt>
<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">    <tt id="link-287" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-287', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'p'</tt> </tt>
<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"> </tt>
<a name="P.xml"></a><div id="P.xml-def"><a name="L1308"></a><tt class="py-lineno">1308</tt> <a class="py-toggle" href="#" id="P.xml-toggle" onclick="return toggle('P.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.P-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="P.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="P.xml-expanded"><a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt id="link-288" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-288', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-289', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'cr2br'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">            <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">'&lt;br /&gt;'</tt><tt class="py-op">)</tt> </tt>
<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">text</tt> </tt>
</div></div><a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"> </tt>
<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"> </tt>
<a name="B"></a><div id="B-def"><a name="L1315"></a><tt class="py-lineno">1315</tt> <a class="py-toggle" href="#" id="B-toggle" onclick="return toggle('B');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.B-class.html">B</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="B-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="B-expanded"><a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"> </tt>
<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">    <tt id="link-290" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-290', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
</div><a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt>
<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"> </tt>
<a name="BR"></a><div id="BR-def"><a name="L1320"></a><tt class="py-lineno">1320</tt> <a class="py-toggle" href="#" id="BR-toggle" onclick="return toggle('BR');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.BR-class.html">BR</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BR-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BR-expanded"><a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"> </tt>
<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">    <tt id="link-291" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-291', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'br/'</tt> </tt>
</div><a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"> </tt>
<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"> </tt>
<a name="HR"></a><div id="HR-def"><a name="L1325"></a><tt class="py-lineno">1325</tt> <a class="py-toggle" href="#" id="HR-toggle" onclick="return toggle('HR');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.HR-class.html">HR</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="HR-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HR-expanded"><a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"> </tt>
<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">    <tt id="link-292" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-292', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hr/'</tt> </tt>
</div><a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line"> </tt>
<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"> </tt>
<a name="A"></a><div id="A-def"><a name="L1330"></a><tt class="py-lineno">1330</tt> <a class="py-toggle" href="#" id="A-toggle" onclick="return toggle('A');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.A-class.html">A</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="A-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="A-expanded"><a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"> </tt>
<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">    <tt id="link-293" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-293', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"> </tt>
<a name="A.xml"></a><div id="A.xml-def"><a name="L1334"></a><tt class="py-lineno">1334</tt> <a class="py-toggle" href="#" id="A.xml-toggle" onclick="return toggle('A.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.A-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="A.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="A.xml-expanded"><a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'delete'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-string">"jQuery(this).closest('%s').remove();"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'delete'</tt><tt class="py-op">]</tt> </tt>
<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'component'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_onclick'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-string">"web2py_component('%s','%s');%sreturn false;"</tt> <tt class="py-op">%</tt> \ </tt>
<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'component'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_href'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_href'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'#null'</tt> </tt>
<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'callback'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_onclick'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-string">"if(confirm(w2p_ajax_confirm_message||'Are you sure you want o delete this object?')){ajax('%s',[],'%s');%s};return false;"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'callback'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_onclick'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-string">"ajax('%s',[],'%s');%sreturn false;"</tt> <tt class="py-op">%</tt> \ </tt>
<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'callback'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_href'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_href'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'#null'</tt> </tt>
<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'cid'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_onclick'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-string">'web2py_component("%s","%s");%sreturn false;'</tt> <tt class="py-op">%</tt> \ </tt>
<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_href'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'cid'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-294" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-294', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-295', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"> </tt>
<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"> </tt>
<a name="BUTTON"></a><div id="BUTTON-def"><a name="L1356"></a><tt class="py-lineno">1356</tt> <a class="py-toggle" href="#" id="BUTTON-toggle" onclick="return toggle('BUTTON');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.BUTTON-class.html">BUTTON</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BUTTON-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BUTTON-expanded"><a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"> </tt>
<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">    <tt id="link-296" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-296', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'button'</tt> </tt>
</div><a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"> </tt>
<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"> </tt>
<a name="EM"></a><div id="EM-def"><a name="L1361"></a><tt class="py-lineno">1361</tt> <a class="py-toggle" href="#" id="EM-toggle" onclick="return toggle('EM');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.EM-class.html">EM</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="EM-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="EM-expanded"><a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line"> </tt>
<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">    <tt id="link-297" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-297', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'em'</tt> </tt>
</div><a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line"> </tt>
<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"> </tt>
<a name="EMBED"></a><div id="EMBED-def"><a name="L1366"></a><tt class="py-lineno">1366</tt> <a class="py-toggle" href="#" id="EMBED-toggle" onclick="return toggle('EMBED');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.EMBED-class.html">EMBED</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="EMBED-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="EMBED-expanded"><a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"> </tt>
<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">    <tt id="link-298" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-298', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'embed/'</tt> </tt>
</div><a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line"> </tt>
<a name="TT"></a><div id="TT-def"><a name="L1371"></a><tt class="py-lineno">1371</tt> <a class="py-toggle" href="#" id="TT-toggle" onclick="return toggle('TT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TT-class.html">TT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TT-expanded"><a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"> </tt>
<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">    <tt id="link-299" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-299', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'tt'</tt> </tt>
</div><a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"> </tt>
<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"> </tt>
<a name="PRE"></a><div id="PRE-def"><a name="L1376"></a><tt class="py-lineno">1376</tt> <a class="py-toggle" href="#" id="PRE-toggle" onclick="return toggle('PRE');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.PRE-class.html">PRE</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="PRE-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="PRE-expanded"><a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"> </tt>
<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">    <tt id="link-300" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-300', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'pre'</tt> </tt>
</div><a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"> </tt>
<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"> </tt>
<a name="CENTER"></a><div id="CENTER-def"><a name="L1381"></a><tt class="py-lineno">1381</tt> <a class="py-toggle" href="#" id="CENTER-toggle" onclick="return toggle('CENTER');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.CENTER-class.html">CENTER</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="CENTER-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CENTER-expanded"><a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"> </tt>
<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">    <tt id="link-301" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-301', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt> </tt>
</div><a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"> </tt>
<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"> </tt>
<a name="CODE"></a><div id="CODE-def"><a name="L1386"></a><tt class="py-lineno">1386</tt> <a class="py-toggle" href="#" id="CODE-toggle" onclick="return toggle('CODE');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.CODE-class.html">CODE</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="CODE-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CODE-expanded"><a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"> </tt>
<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-docstring">    displays code in HTML with syntax highlighting.</tt> </tt>
<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-docstring">    :param attributes: optional attributes:</tt> </tt>
<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-docstring">        - language: indicates the language, otherwise PYTHON is assumed</tt> </tt>
<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-docstring">        - link: can provide a link</tt> </tt>
<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-docstring">        - styles: for styles</tt> </tt>
<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-docstring">    Example::</tt> </tt>
<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-docstring">        {{=CODE(\"print 'hello world'\", language='python', link=None,</tt> </tt>
<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-docstring">            counter=1, styles={}, highlight_line=None)}}</tt> </tt>
<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-docstring">    supported languages are \"python\", \"html_plain\", \"c\", \"cpp\",</tt> </tt>
<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-docstring">    \"web2py\", \"html\".</tt> </tt>
<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-docstring">    The \"html\" language interprets {{ and }} tags as \"web2py\" code,</tt> </tt>
<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"><tt class="py-docstring">    \"html_plain\" doesn't.</tt> </tt>
<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"><tt class="py-docstring">    if a link='/examples/global/vars/' is provided web2py keywords are linked to</tt> </tt>
<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"><tt class="py-docstring">    the online docs.</tt> </tt>
<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"><tt class="py-docstring">    the counter is used for line numbering, counter can be None or a prompt</tt> </tt>
<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-docstring">    string.</tt> </tt>
<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"> </tt>
<a name="CODE.xml"></a><div id="CODE.xml-def"><a name="L1415"></a><tt class="py-lineno">1415</tt> <a class="py-toggle" href="#" id="CODE.xml-toggle" onclick="return toggle('CODE.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.CODE-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="CODE.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CODE.xml-expanded"><a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">        <tt class="py-name">language</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'language'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'PYTHON'</tt> </tt>
<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">        <tt class="py-name">link</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'link'</tt><tt class="py-op">]</tt> </tt>
<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-name">counter</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name" targets="Method web2py.gluon.dal.Reference.get()=web2py.gluon.dal.Reference-class.html#get"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-302', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'counter'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">        <tt class="py-name">highlight_line</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-303', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'highlight_line'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">        <tt class="py-name">context_lines</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-304', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'context_lines'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt>  </tt>
<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-name">styles</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'styles'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-305" class="py-name"><a title="web2py.gluon.highlight
web2py.gluon.highlight.Highlighter.highlight
web2py.gluon.highlight.highlight" class="py-name" href="#" onclick="return doclink('link-305', 'highlight', 'link-7');">highlight</a></tt><tt class="py-op">(</tt> </tt>
<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">            <tt id="link-306" class="py-name"><a title="web2py.gluon.html.join
web2py.gluon.rocket.Listener.join" class="py-name" href="#" onclick="return doclink('link-306', 'join', 'link-13');">join</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">            <tt class="py-name">language</tt><tt class="py-op">=</tt><tt class="py-name">language</tt><tt class="py-op">,</tt> </tt>
<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">            <tt class="py-name">link</tt><tt class="py-op">=</tt><tt class="py-name">link</tt><tt class="py-op">,</tt> </tt>
<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">            <tt class="py-name">counter</tt><tt class="py-op">=</tt><tt class="py-name">counter</tt><tt class="py-op">,</tt> </tt>
<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">            <tt class="py-name">styles</tt><tt class="py-op">=</tt><tt class="py-name">styles</tt><tt class="py-op">,</tt> </tt>
<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">            <tt class="py-name">attributes</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">,</tt> </tt>
<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">            <tt class="py-name">highlight_line</tt><tt class="py-op">=</tt><tt class="py-name">highlight_line</tt><tt class="py-op">,</tt> </tt>
<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">            <tt class="py-name">context_lines</tt><tt class="py-op">=</tt><tt class="py-name">context_lines</tt><tt class="py-op">,</tt> </tt>
<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">            <tt class="py-op">)</tt> </tt>
</div></div><a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line"> </tt>
<a name="LABEL"></a><div id="LABEL-def"><a name="L1434"></a><tt class="py-lineno">1434</tt> <a class="py-toggle" href="#" id="LABEL-toggle" onclick="return toggle('LABEL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.LABEL-class.html">LABEL</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="LABEL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LABEL-expanded"><a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line"> </tt>
<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">    <tt id="link-307" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-307', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'label'</tt> </tt>
</div><a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line"> </tt>
<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
<a name="LI"></a><div id="LI-def"><a name="L1439"></a><tt class="py-lineno">1439</tt> <a class="py-toggle" href="#" id="LI-toggle" onclick="return toggle('LI');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.LI-class.html">LI</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="LI-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LI-expanded"><a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"> </tt>
<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">    <tt id="link-308" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-308', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'li'</tt> </tt>
</div><a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"> </tt>
<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"> </tt>
<a name="UL"></a><div id="UL-def"><a name="L1444"></a><tt class="py-lineno">1444</tt> <a class="py-toggle" href="#" id="UL-toggle" onclick="return toggle('UL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.UL-class.html">UL</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="UL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UL-expanded"><a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line"><tt class="py-docstring">    UL Component.</tt> </tt>
<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line"><tt class="py-docstring">    If subcomponents are not LI-components they will be wrapped in a LI</tt> </tt>
<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"><tt class="py-docstring">    see also :class:`DIV`</tt> </tt>
<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line"> </tt>
<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">    <tt id="link-309" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-309', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'ul'</tt> </tt>
<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line"> </tt>
<a name="UL._fixup"></a><div id="UL._fixup-def"><a name="L1455"></a><tt class="py-lineno">1455</tt> <a class="py-toggle" href="#" id="UL._fixup-toggle" onclick="return toggle('UL._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.UL-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="UL._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UL._fixup-expanded"><a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name" targets="Method web2py.gluon.html.DIV._wrap_components()=web2py.gluon.html.DIV-class.html#_wrap_components"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-310', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt id="link-311" class="py-name" targets="Class web2py.gluon.html.LI=web2py.gluon.html.LI-class.html"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-311', 'LI', 'link-311');">LI</a></tt><tt class="py-op">,</tt> <tt id="link-312" class="py-name"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-312', 'LI', 'link-311');">LI</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"> </tt>
<a name="OL"></a><div id="OL-def"><a name="L1459"></a><tt class="py-lineno">1459</tt> <a class="py-toggle" href="#" id="OL-toggle" onclick="return toggle('OL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.OL-class.html">OL</a><tt class="py-op">(</tt><tt class="py-base-class">UL</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OL-expanded"><a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"> </tt>
<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">    <tt id="link-313" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-313', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'ol'</tt> </tt>
</div><a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"> </tt>
<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"> </tt>
<a name="TD"></a><div id="TD-def"><a name="L1464"></a><tt class="py-lineno">1464</tt> <a class="py-toggle" href="#" id="TD-toggle" onclick="return toggle('TD');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TD-class.html">TD</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TD-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TD-expanded"><a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"> </tt>
<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">    <tt id="link-314" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-314', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'td'</tt> </tt>
</div><a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"> </tt>
<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"> </tt>
<a name="TH"></a><div id="TH-def"><a name="L1469"></a><tt class="py-lineno">1469</tt> <a class="py-toggle" href="#" id="TH-toggle" onclick="return toggle('TH');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TH-class.html">TH</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TH-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TH-expanded"><a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"> </tt>
<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">    <tt id="link-315" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-315', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'th'</tt> </tt>
</div><a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"> </tt>
<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"> </tt>
<a name="TR"></a><div id="TR-def"><a name="L1474"></a><tt class="py-lineno">1474</tt> <a class="py-toggle" href="#" id="TR-toggle" onclick="return toggle('TR');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TR-class.html">TR</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TR-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TR-expanded"><a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-docstring">    TR Component.</tt> </tt>
<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-docstring">    If subcomponents are not TD/TH-components they will be wrapped in a TD</tt> </tt>
<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-docstring">    see also :class:`DIV`</tt> </tt>
<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"> </tt>
<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">    <tt id="link-316" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-316', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'tr'</tt> </tt>
<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
<a name="TR._fixup"></a><div id="TR._fixup-def"><a name="L1485"></a><tt class="py-lineno">1485</tt> <a class="py-toggle" href="#" id="TR._fixup-toggle" onclick="return toggle('TR._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.TR-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TR._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TR._fixup-expanded"><a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-317', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-318" class="py-name" targets="Class web2py.gluon.html.TD=web2py.gluon.html.TD-class.html"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-318', 'TD', 'link-318');">TD</a></tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name" targets="Class web2py.gluon.html.TH=web2py.gluon.html.TH-class.html"><a title="web2py.gluon.html.TH" class="py-name" href="#" onclick="return doclink('link-319', 'TH', 'link-319');">TH</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-320" class="py-name"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-320', 'TD', 'link-318');">TD</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"> </tt>
<a name="THEAD"></a><div id="THEAD-def"><a name="L1488"></a><tt class="py-lineno">1488</tt> <a class="py-toggle" href="#" id="THEAD-toggle" onclick="return toggle('THEAD');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.THEAD-class.html">THEAD</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="THEAD-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="THEAD-expanded"><a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"> </tt>
<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">    <tt id="link-321" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-321', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'thead'</tt> </tt>
<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"> </tt>
<a name="THEAD._fixup"></a><div id="THEAD._fixup-def"><a name="L1492"></a><tt class="py-lineno">1492</tt> <a class="py-toggle" href="#" id="THEAD._fixup-toggle" onclick="return toggle('THEAD._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.THEAD-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="THEAD._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="THEAD._fixup-expanded"><a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-322', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt id="link-323" class="py-name" targets="Class web2py.gluon.html.TR=web2py.gluon.html.TR-class.html"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-323', 'TR', 'link-323');">TR</a></tt><tt class="py-op">,</tt> <tt id="link-324" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-324', 'TR', 'link-323');">TR</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"> </tt>
<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"> </tt>
<a name="TBODY"></a><div id="TBODY-def"><a name="L1496"></a><tt class="py-lineno">1496</tt> <a class="py-toggle" href="#" id="TBODY-toggle" onclick="return toggle('TBODY');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TBODY-class.html">TBODY</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TBODY-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TBODY-expanded"><a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"> </tt>
<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">    <tt id="link-325" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-325', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'tbody'</tt> </tt>
<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"> </tt>
<a name="TBODY._fixup"></a><div id="TBODY._fixup-def"><a name="L1500"></a><tt class="py-lineno">1500</tt> <a class="py-toggle" href="#" id="TBODY._fixup-toggle" onclick="return toggle('TBODY._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.TBODY-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TBODY._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TBODY._fixup-expanded"><a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-326', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt id="link-327" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-327', 'TR', 'link-323');">TR</a></tt><tt class="py-op">,</tt> <tt id="link-328" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-328', 'TR', 'link-323');">TR</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"> </tt>
<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"> </tt>
<a name="TFOOT"></a><div id="TFOOT-def"><a name="L1504"></a><tt class="py-lineno">1504</tt> <a class="py-toggle" href="#" id="TFOOT-toggle" onclick="return toggle('TFOOT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TFOOT-class.html">TFOOT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TFOOT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TFOOT-expanded"><a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"> </tt>
<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">    <tt id="link-329" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-329', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'tfoot'</tt> </tt>
<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"> </tt>
<a name="TFOOT._fixup"></a><div id="TFOOT._fixup-def"><a name="L1508"></a><tt class="py-lineno">1508</tt> <a class="py-toggle" href="#" id="TFOOT._fixup-toggle" onclick="return toggle('TFOOT._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.TFOOT-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TFOOT._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TFOOT._fixup-expanded"><a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-330', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt id="link-331" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-331', 'TR', 'link-323');">TR</a></tt><tt class="py-op">,</tt> <tt id="link-332" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-332', 'TR', 'link-323');">TR</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"> </tt>
<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"> </tt>
<a name="COL"></a><div id="COL-def"><a name="L1512"></a><tt class="py-lineno">1512</tt> <a class="py-toggle" href="#" id="COL-toggle" onclick="return toggle('COL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.COL-class.html">COL</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="COL-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="COL-expanded"><a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"> </tt>
<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">    <tt id="link-333" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-333', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'col'</tt> </tt>
</div><a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"> </tt>
<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"> </tt>
<a name="COLGROUP"></a><div id="COLGROUP-def"><a name="L1517"></a><tt class="py-lineno">1517</tt> <a class="py-toggle" href="#" id="COLGROUP-toggle" onclick="return toggle('COLGROUP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.COLGROUP-class.html">COLGROUP</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="COLGROUP-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="COLGROUP-expanded"><a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"> </tt>
<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">    <tt id="link-334" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-334', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'colgroup'</tt> </tt>
</div><a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"> </tt>
<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"> </tt>
<a name="TABLE"></a><div id="TABLE-def"><a name="L1522"></a><tt class="py-lineno">1522</tt> <a class="py-toggle" href="#" id="TABLE-toggle" onclick="return toggle('TABLE');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TABLE-class.html">TABLE</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TABLE-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TABLE-expanded"><a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-docstring">    TABLE Component.</tt> </tt>
<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-docstring">    If subcomponents are not TR/TBODY/THEAD/TFOOT-components</tt> </tt>
<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"><tt class="py-docstring">    they will be wrapped in a TR</tt> </tt>
<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-docstring">    see also :class:`DIV`</tt> </tt>
<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"> </tt>
<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">    <tt id="link-335" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-335', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'table'</tt> </tt>
<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"> </tt>
<a name="TABLE._fixup"></a><div id="TABLE._fixup-def"><a name="L1534"></a><tt class="py-lineno">1534</tt> <a class="py-toggle" href="#" id="TABLE._fixup-toggle" onclick="return toggle('TABLE._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.TABLE-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TABLE._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TABLE._fixup-expanded"><a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="web2py.gluon.html.DIV._wrap_components" class="py-name" href="#" onclick="return doclink('link-336', '_wrap_components', 'link-310');">_wrap_components</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-337" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-337', 'TR', 'link-323');">TR</a></tt><tt class="py-op">,</tt> <tt id="link-338" class="py-name" targets="Class web2py.gluon.html.TBODY=web2py.gluon.html.TBODY-class.html"><a title="web2py.gluon.html.TBODY" class="py-name" href="#" onclick="return doclink('link-338', 'TBODY', 'link-338');">TBODY</a></tt><tt class="py-op">,</tt> <tt id="link-339" class="py-name" targets="Class web2py.gluon.html.THEAD=web2py.gluon.html.THEAD-class.html"><a title="web2py.gluon.html.THEAD" class="py-name" href="#" onclick="return doclink('link-339', 'THEAD', 'link-339');">THEAD</a></tt><tt class="py-op">,</tt> <tt id="link-340" class="py-name" targets="Class web2py.gluon.html.TFOOT=web2py.gluon.html.TFOOT-class.html"><a title="web2py.gluon.html.TFOOT" class="py-name" href="#" onclick="return doclink('link-340', 'TFOOT', 'link-340');">TFOOT</a></tt><tt class="py-op">,</tt> <tt id="link-341" class="py-name" targets="Class web2py.gluon.html.COL=web2py.gluon.html.COL-class.html"><a title="web2py.gluon.html.COL" class="py-name" href="#" onclick="return doclink('link-341', 'COL', 'link-341');">COL</a></tt><tt class="py-op">,</tt> <tt id="link-342" class="py-name" targets="Class web2py.gluon.html.COLGROUP=web2py.gluon.html.COLGROUP-class.html"><a title="web2py.gluon.html.COLGROUP" class="py-name" href="#" onclick="return doclink('link-342', 'COLGROUP', 'link-342');">COLGROUP</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-343" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-343', 'TR', 'link-323');">TR</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line"> </tt>
<a name="I"></a><div id="I-def"><a name="L1537"></a><tt class="py-lineno">1537</tt> <a class="py-toggle" href="#" id="I-toggle" onclick="return toggle('I');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.I-class.html">I</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="I-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="I-expanded"><a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"> </tt>
<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">    <tt id="link-344" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-344', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'i'</tt> </tt>
</div><a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line"> </tt>
<a name="IFRAME"></a><div id="IFRAME-def"><a name="L1541"></a><tt class="py-lineno">1541</tt> <a class="py-toggle" href="#" id="IFRAME-toggle" onclick="return toggle('IFRAME');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.IFRAME-class.html">IFRAME</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="IFRAME-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="IFRAME-expanded"><a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line"> </tt>
<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">    <tt id="link-345" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-345', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'iframe'</tt> </tt>
</div><a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line"> </tt>
<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line"> </tt>
<a name="INPUT"></a><div id="INPUT-def"><a name="L1546"></a><tt class="py-lineno">1546</tt> <a class="py-toggle" href="#" id="INPUT-toggle" onclick="return toggle('INPUT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.INPUT-class.html">INPUT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="INPUT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="INPUT-expanded"><a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line"> </tt>
<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line"><tt class="py-docstring">        INPUT Component</tt> </tt>
<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"><tt class="py-docstring">        examples::</tt> </tt>
<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; INPUT(_type='text', _name='name', value='Max').xml()</tt> </tt>
<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"><tt class="py-docstring">            '&lt;input name=\"name\" type=\"text\" value=\"Max\" /&gt;'</tt> </tt>
<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; INPUT(_type='checkbox', _name='checkbox', value='on').xml()</tt> </tt>
<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"><tt class="py-docstring">            '&lt;input checked=\"checked\" name=\"checkbox\" type=\"checkbox\" value=\"on\" /&gt;'</tt> </tt>
<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; INPUT(_type='radio', _name='radio', _value='yes', value='yes').xml()</tt> </tt>
<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line"><tt class="py-docstring">            '&lt;input checked=\"checked\" name=\"radio\" type=\"radio\" value=\"yes\" /&gt;'</tt> </tt>
<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; INPUT(_type='radio', _name='radio', _value='no', value='yes').xml()</tt> </tt>
<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-docstring">            '&lt;input name=\"radio\" type=\"radio\" value=\"no\" /&gt;'</tt> </tt>
<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-docstring">        the input helper takes two special attributes value= and requires=.</tt> </tt>
<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-docstring">        :param value: used to pass the initial value for the input field.</tt> </tt>
<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-docstring">            value differs from _value because it works for checkboxes, radio,</tt> </tt>
<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-docstring">            textarea and select/option too.</tt> </tt>
<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-docstring">            - for a checkbox value should be '' or 'on'.</tt> </tt>
<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-docstring">            - for a radio or select/option value should be the _value</tt> </tt>
<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-docstring">                of the checked/selected item.</tt> </tt>
<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-docstring">        :param requires: should be None, or a validator or a list of validators</tt> </tt>
<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-docstring">            for the value of the field.</tt> </tt>
<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"> </tt>
<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">    <tt id="link-346" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-346', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'input/'</tt> </tt>
<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"> </tt>
<a name="INPUT._validate"></a><div id="INPUT._validate-def"><a name="L1581"></a><tt class="py-lineno">1581</tt> <a class="py-toggle" href="#" id="INPUT._validate-toggle" onclick="return toggle('INPUT._validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.INPUT-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="INPUT._validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="INPUT._validate-expanded"><a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"> </tt>
<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">        <tt class="py-comment"># # this only changes value, not _value</tt> </tt>
<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">        <tt id="link-347" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-347', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_name'</tt><tt class="py-op">]</tt> </tt>
<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-348" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-348', 'name', 'link-93');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt id="link-349" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-349', 'name', 'link-93');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">        <tt id="link-350" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-350', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-351" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-351', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"> </tt>
<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'checkbox'</tt><tt class="py-op">:</tt> </tt>
<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'old_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-352', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt id="link-353" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-353', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'old_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">False</tt> </tt>
<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-354', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt id="link-355" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-355', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">tuple</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt> </tt>
<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">value</tt> </tt>
<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">        <tt id="link-356" class="py-name" targets="Method web2py.gluon.tools.Auth.requires()=web2py.gluon.tools.Auth-class.html#requires"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-356', 'requires', 'link-356');">requires</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'requires'</tt><tt class="py-op">]</tt> </tt>
<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-357" class="py-name"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-357', 'requires', 'link-356');">requires</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-358" class="py-name"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-358', 'requires', 'link-356');">requires</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">                <tt id="link-359" class="py-name"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-359', 'requires', 'link-356');">requires</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-360" class="py-name"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-360', 'requires', 'link-356');">requires</a></tt><tt class="py-op">]</tt> </tt>
<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">validator</tt> <tt class="py-keyword">in</tt> <tt id="link-361" class="py-name"><a title="web2py.gluon.tools.Auth.requires" class="py-name" href="#" onclick="return doclink('link-361', 'requires', 'link-356');">requires</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">validator</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">[</tt><tt id="link-362" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-362', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">[</tt><tt id="link-363" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-363', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">errors</tt> </tt>
<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-364" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-364', 'name', 'link-93');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">:</tt> </tt>
<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">[</tt><tt id="link-365" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-365', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
</div><a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"> </tt>
<a name="INPUT._postprocessing"></a><div id="INPUT._postprocessing-def"><a name="L1616"></a><tt class="py-lineno">1616</tt> <a class="py-toggle" href="#" id="INPUT._postprocessing-toggle" onclick="return toggle('INPUT._postprocessing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.INPUT-class.html#_postprocessing">_postprocessing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="INPUT._postprocessing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="INPUT._postprocessing-expanded"><a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_type'</tt><tt class="py-op">]</tt> </tt>
<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">t</tt><tt class="py-op">:</tt> </tt>
<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">            <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'text'</tt> </tt>
<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name" targets="Method web2py.gluon.dal.Expression.lower()=web2py.gluon.dal.Expression-class.html#lower"><a title="web2py.gluon.dal.Expression.lower" class="py-name" href="#" onclick="return doclink('link-366', 'lower', 'link-366');">lower</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> </tt>
<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">            <tt class="py-name">_value</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">            <tt class="py-name">_value</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'_checked'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'value'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt class="py-string">'checkbox'</tt><tt class="py-op">:</tt> </tt>
<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">_value</tt><tt class="py-op">:</tt> </tt>
<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">                <tt class="py-name">_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'on'</tt> </tt>
<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">_value</tt><tt class="py-op">]</tt> </tt>
<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt><tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'|'</tt><tt class="py-op">)</tt> </tt>
<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_checked'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'checked'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt> </tt>
<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt class="py-string">'radio'</tt><tt class="py-op">:</tt> </tt>
<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_checked'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'checked'</tt> </tt>
<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_checked'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt class="py-string">'hidden'</tt><tt class="py-op">:</tt> </tt>
<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_value</tt> </tt>
<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
</div><a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"> </tt>
<a name="INPUT.xml"></a><div id="INPUT.xml-def"><a name="L1649"></a><tt class="py-lineno">1649</tt> <a class="py-toggle" href="#" id="INPUT.xml-toggle" onclick="return toggle('INPUT.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.INPUT-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="INPUT.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="INPUT.xml-expanded"><a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">        <tt id="link-367" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-367', 'name', 'link-93');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-368', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-369" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-369', 'name', 'link-93');">name</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'errors'</tt><tt class="py-op">)</tt> \ </tt>
<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-370', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt id="link-371" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-371', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> \ </tt>
<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'hideerror'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'invalidinput'</tt> </tt>
<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-372" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-372', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-373" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-373', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-374" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-374', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">[</tt><tt id="link-375" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-375', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-376" class="py-name" targets="Variable web2py.gluon.sqlhtml.AutocompleteWidget._class=web2py.gluon.sqlhtml.AutocompleteWidget-class.html#_class,Variable web2py.gluon.sqlhtml.BooleanWidget._class=web2py.gluon.sqlhtml.BooleanWidget-class.html#_class,Variable web2py.gluon.sqlhtml.DateWidget._class=web2py.gluon.sqlhtml.DateWidget-class.html#_class,Variable web2py.gluon.sqlhtml.DatetimeWidget._class=web2py.gluon.sqlhtml.DatetimeWidget-class.html#_class,Variable web2py.gluon.sqlhtml.DecimalWidget._class=web2py.gluon.sqlhtml.DecimalWidget-class.html#_class,Variable web2py.gluon.sqlhtml.DoubleWidget._class=web2py.gluon.sqlhtml.DoubleWidget-class.html#_class,Variable web2py.gluon.sqlhtml.FormWidget._class=web2py.gluon.sqlhtml.FormWidget-class.html#_class,Variable web2py.gluon.sqlhtml.IntegerWidget._class=web2py.gluon.sqlhtml.IntegerWidget-class.html#_class,Variable web2py.gluon.sqlhtml.PasswordWidget._class=web2py.gluon.sqlhtml.PasswordWidget-class.html#_class,Variable web2py.gluon.sqlhtml.StringWidget._class=web2py.gluon.sqlhtml.StringWidget-class.html#_class,Variable web2py.gluon.sqlhtml.TextWidget._class=web2py.gluon.sqlhtml.TextWidget-class.html#_class,Variable web2py.gluon.sqlhtml.TimeWidget._class=web2py.gluon.sqlhtml.TimeWidget-class.html#_class,Variable web2py.gluon.sqlhtml.UploadWidget._class=web2py.gluon.sqlhtml.UploadWidget-class.html#_class"><a title="web2py.gluon.sqlhtml.AutocompleteWidget._class
web2py.gluon.sqlhtml.BooleanWidget._class
web2py.gluon.sqlhtml.DateWidget._class
web2py.gluon.sqlhtml.DatetimeWidget._class
web2py.gluon.sqlhtml.DecimalWidget._class
web2py.gluon.sqlhtml.DoubleWidget._class
web2py.gluon.sqlhtml.FormWidget._class
web2py.gluon.sqlhtml.IntegerWidget._class
web2py.gluon.sqlhtml.PasswordWidget._class
web2py.gluon.sqlhtml.StringWidget._class
web2py.gluon.sqlhtml.TextWidget._class
web2py.gluon.sqlhtml.TimeWidget._class
web2py.gluon.sqlhtml.UploadWidget._class" class="py-name" href="#" onclick="return doclink('link-376', '_class', 'link-376');">_class</a></tt><tt class="py-op">=</tt><tt class="py-string">'error'</tt><tt class="py-op">,</tt> </tt>
<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">_id</tt><tt class="py-op">=</tt><tt class="py-string">'%s__error'</tt> <tt class="py-op">%</tt> <tt id="link-377" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-377', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-378', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-379" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-379', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-380', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"> </tt>
<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line"> </tt>
<a name="TEXTAREA"></a><div id="TEXTAREA-def"><a name="L1661"></a><tt class="py-lineno">1661</tt> <a class="py-toggle" href="#" id="TEXTAREA-toggle" onclick="return toggle('TEXTAREA');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.TEXTAREA-class.html">TEXTAREA</a><tt class="py-op">(</tt><tt class="py-base-class">INPUT</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TEXTAREA-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TEXTAREA-expanded"><a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line"> </tt>
<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-docstring">        TEXTAREA(_name='sometext', value='blah '*100, requires=IS_NOT_EMPTY())</tt> </tt>
<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-docstring">    'blah blah blah ...' will be the content of the textarea field.</tt> </tt>
<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"> </tt>
<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">    <tt id="link-381" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-381', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'textarea'</tt> </tt>
<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"> </tt>
<a name="TEXTAREA._postprocessing"></a><div id="TEXTAREA._postprocessing-def"><a name="L1673"></a><tt class="py-lineno">1673</tt> <a class="py-toggle" href="#" id="TEXTAREA._postprocessing-toggle" onclick="return toggle('TEXTAREA._postprocessing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.TEXTAREA-class.html#_postprocessing">_postprocessing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="TEXTAREA._postprocessing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TEXTAREA._postprocessing-expanded"><a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_rows'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_rows'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">10</tt> </tt>
<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_cols'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_cols'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">40</tt> </tt>
<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
</div></div><a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"> </tt>
<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"> </tt>
<a name="OPTION"></a><div id="OPTION-def"><a name="L1684"></a><tt class="py-lineno">1684</tt> <a class="py-toggle" href="#" id="OPTION-toggle" onclick="return toggle('OPTION');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.OPTION-class.html">OPTION</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OPTION-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OPTION-expanded"><a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line"> </tt>
<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">    <tt id="link-382" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-382', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'option'</tt> </tt>
<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"> </tt>
<a name="OPTION._fixup"></a><div id="OPTION._fixup-def"><a name="L1688"></a><tt class="py-lineno">1688</tt> <a class="py-toggle" href="#" id="OPTION._fixup-toggle" onclick="return toggle('OPTION._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.OPTION-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OPTION._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OPTION._fixup-expanded"><a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_value'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"> </tt>
<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"> </tt>
<a name="OBJECT"></a><div id="OBJECT-def"><a name="L1693"></a><tt class="py-lineno">1693</tt> <a class="py-toggle" href="#" id="OBJECT-toggle" onclick="return toggle('OBJECT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.OBJECT-class.html">OBJECT</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OBJECT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OBJECT-expanded"><a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"> </tt>
<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">    <tt id="link-383" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-383', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'object'</tt> </tt>
</div><a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"> </tt>
<a name="OPTGROUP"></a><div id="OPTGROUP-def"><a name="L1697"></a><tt class="py-lineno">1697</tt> <a class="py-toggle" href="#" id="OPTGROUP-toggle" onclick="return toggle('OPTGROUP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.OPTGROUP-class.html">OPTGROUP</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OPTGROUP-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OPTGROUP-expanded"><a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"> </tt>
<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">    <tt id="link-384" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-384', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'optgroup'</tt> </tt>
<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"> </tt>
<a name="OPTGROUP._fixup"></a><div id="OPTGROUP._fixup-def"><a name="L1701"></a><tt class="py-lineno">1701</tt> <a class="py-toggle" href="#" id="OPTGROUP._fixup-toggle" onclick="return toggle('OPTGROUP._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.OPTGROUP-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OPTGROUP._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OPTGROUP._fixup-expanded"><a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">        <tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt id="link-385" class="py-name" targets="Class web2py.gluon.html.OPTION=web2py.gluon.html.OPTION-class.html"><a title="web2py.gluon.html.OPTION" class="py-name" href="#" onclick="return doclink('link-385', 'OPTION', 'link-385');">OPTION</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-386', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-387', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-388" class="py-name"><a title="web2py.gluon.html.OPTION" class="py-name" href="#" onclick="return doclink('link-388', 'OPTION', 'link-385');">OPTION</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">components</tt> </tt>
</div></div><a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"> </tt>
<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"> </tt>
<a name="SELECT"></a><div id="SELECT-def"><a name="L1711"></a><tt class="py-lineno">1711</tt> <a class="py-toggle" href="#" id="SELECT-toggle" onclick="return toggle('SELECT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.SELECT-class.html">SELECT</a><tt class="py-op">(</tt><tt class="py-base-class">INPUT</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SELECT-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SELECT-expanded"><a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"> </tt>
<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; from validators import IS_IN_SET</tt> </tt>
<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; SELECT('yes', 'no', _name='selector', value='yes',</tt> </tt>
<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line"><tt class="py-docstring">        ...    requires=IS_IN_SET(['yes', 'no'])).xml()</tt> </tt>
<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;select name=\"selector\"&gt;&lt;option selected=\"selected\" value=\"yes\"&gt;yes&lt;/option&gt;&lt;option value=\"no\"&gt;no&lt;/option&gt;&lt;/select&gt;'</tt> </tt>
<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line"> </tt>
<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">    <tt id="link-389" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-389', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'select'</tt> </tt>
<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line"> </tt>
<a name="SELECT._fixup"></a><div id="SELECT._fixup-def"><a name="L1725"></a><tt class="py-lineno">1725</tt> <a class="py-toggle" href="#" id="SELECT._fixup-toggle" onclick="return toggle('SELECT._fixup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.SELECT-class.html#_fixup">_fixup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SELECT._fixup-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SELECT._fixup-expanded"><a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">        <tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-390" class="py-name"><a title="web2py.gluon.html.OPTION" class="py-name" href="#" onclick="return doclink('link-390', 'OPTION', 'link-385');">OPTION</a></tt><tt class="py-op">,</tt> <tt id="link-391" class="py-name" targets="Class web2py.gluon.html.OPTGROUP=web2py.gluon.html.OPTGROUP-class.html"><a title="web2py.gluon.html.OPTGROUP" class="py-name" href="#" onclick="return doclink('link-391', 'OPTGROUP', 'link-391');">OPTGROUP</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-392', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-393', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-394" class="py-name"><a title="web2py.gluon.html.OPTION" class="py-name" href="#" onclick="return doclink('link-394', 'OPTION', 'link-385');">OPTION</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">components</tt> </tt>
</div><a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line"> </tt>
<a name="SELECT._postprocessing"></a><div id="SELECT._postprocessing-def"><a name="L1734"></a><tt class="py-lineno">1734</tt> <a class="py-toggle" href="#" id="SELECT._postprocessing-toggle" onclick="return toggle('SELECT._postprocessing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.SELECT-class.html#_postprocessing">_postprocessing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SELECT._postprocessing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SELECT._postprocessing-expanded"><a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">        <tt class="py-name">component_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt id="link-395" class="py-name"><a title="web2py.gluon.html.OPTGROUP" class="py-name" href="#" onclick="return doclink('link-395', 'OPTGROUP', 'link-391');">OPTGROUP</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">                <tt class="py-name">component_list</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-396', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">)</tt> </tt>
<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                <tt class="py-name">component_list</tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-397', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">        <tt id="link-398" class="py-name" targets="Method web2py.gluon.validators.IS_IN_DB.options()=web2py.gluon.validators.IS_IN_DB-class.html#options,Method web2py.gluon.validators.IS_IN_SET.options()=web2py.gluon.validators.IS_IN_SET-class.html#options"><a title="web2py.gluon.validators.IS_IN_DB.options
web2py.gluon.validators.IS_IN_SET.options" class="py-name" href="#" onclick="return doclink('link-398', 'options', 'link-398');">options</a></tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">chain</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">component_list</tt><tt class="py-op">)</tt> </tt>
<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"> </tt>
<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt> </tt>
<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_multiple'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-399" class="py-name"><a title="web2py.gluon.validators.IS_IN_DB.options
web2py.gluon.validators.IS_IN_SET.options" class="py-name" href="#" onclick="return doclink('link-399', 'options', 'link-398');">options</a></tt><tt class="py-op">:</tt> <tt class="py-comment"># my patch</tt> </tt>
<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">and</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">                        <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_selected'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'selected'</tt> </tt>
<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">                        <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_selected'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt><tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">                    <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">                    <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-400" class="py-name"><a title="web2py.gluon.validators.IS_IN_DB.options
web2py.gluon.validators.IS_IN_SET.options" class="py-name" href="#" onclick="return doclink('link-400', 'options', 'link-398');">options</a></tt><tt class="py-op">:</tt> <tt class="py-comment"># my patch</tt> </tt>
<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">and</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_value'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line">                        <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_selected'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'selected'</tt> </tt>
<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">                        <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'_selected'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
</div></div><a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"> </tt>
<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"> </tt>
<a name="FIELDSET"></a><div id="FIELDSET-def"><a name="L1763"></a><tt class="py-lineno">1763</tt> <a class="py-toggle" href="#" id="FIELDSET-toggle" onclick="return toggle('FIELDSET');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.FIELDSET-class.html">FIELDSET</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FIELDSET-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FIELDSET-expanded"><a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"> </tt>
<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">    <tt id="link-401" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-401', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'fieldset'</tt> </tt>
</div><a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"> </tt>
<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line"> </tt>
<a name="LEGEND"></a><div id="LEGEND-def"><a name="L1768"></a><tt class="py-lineno">1768</tt> <a class="py-toggle" href="#" id="LEGEND-toggle" onclick="return toggle('LEGEND');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.LEGEND-class.html">LEGEND</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="LEGEND-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LEGEND-expanded"><a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line"> </tt>
<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">    <tt id="link-402" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-402', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'legend'</tt> </tt>
</div><a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line"> </tt>
<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line"> </tt>
<a name="FORM"></a><div id="FORM-def"><a name="L1773"></a><tt class="py-lineno">1773</tt> <a class="py-toggle" href="#" id="FORM-toggle" onclick="return toggle('FORM');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html">FORM</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FORM-expanded"><a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"> </tt>
<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; from validators import IS_NOT_EMPTY</tt> </tt>
<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; form=FORM(INPUT(_name=\"test\", requires=IS_NOT_EMPTY()))</tt> </tt>
<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; form.xml()</tt> </tt>
<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;form action=\"\" enctype=\"multipart/form-data\" method=\"post\"&gt;&lt;input name=\"test\" type=\"text\" /&gt;&lt;/form&gt;'</tt> </tt>
<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"><tt class="py-docstring">    a FORM is container for INPUT, TEXTAREA, SELECT and other helpers</tt> </tt>
<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-docstring">    form has one important method::</tt> </tt>
<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"><tt class="py-docstring">        form.accepts(request.vars, session)</tt> </tt>
<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"><tt class="py-docstring">    if form is accepted (and all validators pass) form.vars contains the</tt> </tt>
<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"><tt class="py-docstring">    accepted vars, otherwise form.errors contains the errors.</tt> </tt>
<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line"><tt class="py-docstring">    in case of errors the form is modified to present the errors to the user.</tt> </tt>
<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"> </tt>
<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">    <tt id="link-403" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-403', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'form'</tt> </tt>
<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"> </tt>
<a name="FORM.__init__"></a><div id="FORM.__init__-def"><a name="L1796"></a><tt class="py-lineno">1796</tt> <a class="py-toggle" href="#" id="FORM.__init__-toggle" onclick="return toggle('FORM.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">components</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">attributes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.__init__-expanded"><a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt id="link-404" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-404', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-405" class="py-name" targets="Method web2py.gluon.cache.Cache.__init__()=web2py.gluon.cache.Cache-class.html#__init__,Method web2py.gluon.cache.CacheAbstract.__init__()=web2py.gluon.cache.CacheAbstract-class.html#__init__,Method web2py.gluon.cache.CacheInRam.__init__()=web2py.gluon.cache.CacheInRam-class.html#__init__,Method web2py.gluon.cache.CacheOnDisk.__init__()=web2py.gluon.cache.CacheOnDisk-class.html#__init__,Method web2py.gluon.compileapp.LoadFactory.__init__()=web2py.gluon.compileapp.LoadFactory-class.html#__init__,Method web2py.gluon.custom_import._DateTrackerImporter.__init__()=web2py.gluon.custom_import._DateTrackerImporter-class.html#__init__,Method web2py.gluon.custom_import._Web2pyImporter.__init__()=web2py.gluon.custom_import._Web2pyImporter-class.html#__init__,Method web2py.gluon.dal.BaseAdapter.__init__()=web2py.gluon.dal.BaseAdapter-class.html#__init__,Method web2py.gluon.dal.CouchDBAdapter.__init__()=web2py.gluon.dal.CouchDBAdapter-class.html#__init__,Method web2py.gluon.dal.CubridAdapter.__init__()=web2py.gluon.dal.CubridAdapter-class.html#__init__,Method web2py.gluon.dal.DAL.__init__()=web2py.gluon.dal.DAL-class.html#__init__,Method web2py.gluon.dal.DB2Adapter.__init__()=web2py.gluon.dal.DB2Adapter-class.html#__init__,Method web2py.gluon.dal.DatabaseStoredFile.__init__()=web2py.gluon.dal.DatabaseStoredFile-class.html#__init__,Method web2py.gluon.dal.Expression.__init__()=web2py.gluon.dal.Expression-class.html#__init__,Method web2py.gluon.dal.Field.__init__()=web2py.gluon.dal.Field-class.html#__init__,Method web2py.gluon.dal.FieldLazy.__init__()=web2py.gluon.dal.FieldLazy-class.html#__init__,Method web2py.gluon.dal.FieldVirtual.__init__()=web2py.gluon.dal.FieldVirtual-class.html#__init__,Method web2py.gluon.dal.FireBirdAdapter.__init__()=web2py.gluon.dal.FireBirdAdapter-class.html#__init__,Method web2py.gluon.dal.FireBirdEmbeddedAdapter.__init__()=web2py.gluon.dal.FireBirdEmbeddedAdapter-class.html#__init__,Method web2py.gluon.dal.GAEDecimalProperty.__init__()=web2py.gluon.dal.GAEDecimalProperty-class.html#__init__,Method web2py.gluon.dal.GAEF.__init__()=web2py.gluon.dal.GAEF-class.html#__init__,Method web2py.gluon.dal.GoogleDatastoreAdapter.__init__()=web2py.gluon.dal.GoogleDatastoreAdapter-class.html#__init__,Method web2py.gluon.dal.GoogleSQLAdapter.__init__()=web2py.gluon.dal.GoogleSQLAdapter-class.html#__init__,Method web2py.gluon.dal.IMAPAdapter.__init__()=web2py.gluon.dal.IMAPAdapter-class.html#__init__,Method web2py.gluon.dal.InformixAdapter.__init__()=web2py.gluon.dal.InformixAdapter-class.html#__init__,Method web2py.gluon.dal.IngresAdapter.__init__()=web2py.gluon.dal.IngresAdapter-class.html#__init__,Method web2py.gluon.dal.JDBCPostgreSQLAdapter.__init__()=web2py.gluon.dal.JDBCPostgreSQLAdapter-class.html#__init__,Method web2py.gluon.dal.JDBCSQLiteAdapter.__init__()=web2py.gluon.dal.JDBCSQLiteAdapter-class.html#__init__,Method web2py.gluon.dal.MSSQLAdapter.__init__()=web2py.gluon.dal.MSSQLAdapter-class.html#__init__,Method web2py.gluon.dal.MongoDBAdapter.__init__()=web2py.gluon.dal.MongoDBAdapter-class.html#__init__,Method web2py.gluon.dal.MySQLAdapter.__init__()=web2py.gluon.dal.MySQLAdapter-class.html#__init__,Method web2py.gluon.dal.OracleAdapter.__init__()=web2py.gluon.dal.OracleAdapter-class.html#__init__,Method web2py.gluon.dal.PostgreSQLAdapter.__init__()=web2py.gluon.dal.PostgreSQLAdapter-class.html#__init__,Method web2py.gluon.dal.Query.__init__()=web2py.gluon.dal.Query-class.html#__init__,Method web2py.gluon.dal.Rows.__init__()=web2py.gluon.dal.Rows-class.html#__init__,Method web2py.gluon.dal.SAPDBAdapter.__init__()=web2py.gluon.dal.SAPDBAdapter-class.html#__init__,Method web2py.gluon.dal.SQLALL.__init__()=web2py.gluon.dal.SQLALL-class.html#__init__,Method web2py.gluon.dal.SQLCustomType.__init__()=web2py.gluon.dal.SQLCustomType-class.html#__init__,Method web2py.gluon.dal.SQLiteAdapter.__init__()=web2py.gluon.dal.SQLiteAdapter-class.html#__init__,Method web2py.gluon.dal.Set.__init__()=web2py.gluon.dal.Set-class.html#__init__,Method web2py.gluon.dal.Table.__init__()=web2py.gluon.dal.Table-class.html#__init__,Method web2py.gluon.dal.TeradataAdapter.__init__()=web2py.gluon.dal.TeradataAdapter-class.html#__init__,Method web2py.gluon.dal.VirtualCommand.__init__()=web2py.gluon.dal.VirtualCommand-class.html#__init__,Method web2py.gluon.debug.Pipe.__init__()=web2py.gluon.debug.Pipe-class.html#__init__,Method web2py.gluon.debug.WebDebugger.__init__()=web2py.gluon.debug.WebDebugger-class.html#__init__,Method web2py.gluon.globals.Request.__init__()=web2py.gluon.globals.Request-class.html#__init__,Method web2py.gluon.globals.Response.__init__()=web2py.gluon.globals.Response-class.html#__init__,Method web2py.gluon.highlight.Highlighter.__init__()=web2py.gluon.highlight.Highlighter-class.html#__init__,Method web2py.gluon.html.BEAUTIFY.__init__()=web2py.gluon.html.BEAUTIFY-class.html#__init__,Method web2py.gluon.html.DIV.__init__()=web2py.gluon.html.DIV-class.html#__init__,Method web2py.gluon.html.FORM.__init__()=web2py.gluon.html.FORM-class.html#__init__,Method web2py.gluon.html.MARKMIN.__init__()=web2py.gluon.html.MARKMIN-class.html#__init__,Method web2py.gluon.html.MENU.__init__()=web2py.gluon.html.MENU-class.html#__init__,Method web2py.gluon.html.XML.__init__()=web2py.gluon.html.XML-class.html#__init__,Method web2py.gluon.html.web2pyHTMLParser.__init__()=web2py.gluon.html.web2pyHTMLParser-class.html#__init__,Method web2py.gluon.http.HTTP.__init__()=web2py.gluon.http.HTTP-class.html#__init__,Method web2py.gluon.languages.lazyT.__init__()=web2py.gluon.languages.lazyT-class.html#__init__,Method web2py.gluon.languages.translator.__init__()=web2py.gluon.languages.translator-class.html#__init__,Method web2py.gluon.main.HttpServer.__init__()=web2py.gluon.main.HttpServer-class.html#__init__,Method web2py.gluon.newcron.Token.__init__()=web2py.gluon.newcron.Token-class.html#__init__,Method web2py.gluon.newcron.cronlauncher.__init__()=web2py.gluon.newcron.cronlauncher-class.html#__init__,Method web2py.gluon.newcron.extcron.__init__()=web2py.gluon.newcron.extcron-class.html#__init__,Method web2py.gluon.newcron.hardcron.__init__()=web2py.gluon.newcron.hardcron-class.html#__init__,Method web2py.gluon.newcron.softcron.__init__()=web2py.gluon.newcron.softcron-class.html#__init__,Method web2py.gluon.portalocker.LockedFile.__init__()=web2py.gluon.portalocker.LockedFile-class.html#__init__,Method web2py.gluon.restricted.RestrictedError.__init__()=web2py.gluon.restricted.RestrictedError-class.html#__init__,Method web2py.gluon.restricted.TicketStorage.__init__()=web2py.gluon.restricted.TicketStorage-class.html#__init__,Method web2py.gluon.rewrite.MapUrlIn.__init__()=web2py.gluon.rewrite.MapUrlIn-class.html#__init__,Method web2py.gluon.rewrite.MapUrlOut.__init__()=web2py.gluon.rewrite.MapUrlOut-class.html#__init__,Method web2py.gluon.rocket.ChunkedReader.__init__()=web2py.gluon.rocket.ChunkedReader-class.html#__init__,Method web2py.gluon.rocket.Connection.__init__()=web2py.gluon.rocket.Connection-class.html#__init__,Method web2py.gluon.rocket.FileLikeSocket.__init__()=web2py.gluon.rocket.FileLikeSocket-class.html#__init__,Method web2py.gluon.rocket.FileSystemWorker.__init__()=web2py.gluon.rocket.FileSystemWorker-class.html#__init__,Method web2py.gluon.rocket.FuturesMiddleware.__init__()=web2py.gluon.rocket.FuturesMiddleware-class.html#__init__,Method web2py.gluon.rocket.LimitingFileWrapper.__init__()=web2py.gluon.rocket.LimitingFileWrapper-class.html#__init__,Method web2py.gluon.rocket.Listener.__init__()=web2py.gluon.rocket.Listener-class.html#__init__,Method web2py.gluon.rocket.Monitor.__init__()=web2py.gluon.rocket.Monitor-class.html#__init__,Method web2py.gluon.rocket.Rocket.__init__()=web2py.gluon.rocket.Rocket-class.html#__init__,Method web2py.gluon.rocket.ThreadPool.__init__()=web2py.gluon.rocket.ThreadPool-class.html#__init__,Method web2py.gluon.rocket.WSGIExecutor.__init__()=web2py.gluon.rocket.WSGIExecutor-class.html#__init__,Method web2py.gluon.rocket.WSGIFuture.__init__()=web2py.gluon.rocket.WSGIFuture-class.html#__init__,Method web2py.gluon.rocket.WSGIWorker.__init__()=web2py.gluon.rocket.WSGIWorker-class.html#__init__,Method web2py.gluon.rocket.Worker.__init__()=web2py.gluon.rocket.Worker-class.html#__init__,Method web2py.gluon.rocket._WorkItem.__init__()=web2py.gluon.rocket._WorkItem-class.html#__init__,Method web2py.gluon.sanitizer.XssCleaner.__init__()=web2py.gluon.sanitizer.XssCleaner-class.html#__init__,Method web2py.gluon.scheduler.MetaScheduler.__init__()=web2py.gluon.scheduler.MetaScheduler-class.html#__init__,Method web2py.gluon.scheduler.Scheduler.__init__()=web2py.gluon.scheduler.Scheduler-class.html#__init__,Method web2py.gluon.scheduler.TYPE.__init__()=web2py.gluon.scheduler.TYPE-class.html#__init__,Method web2py.gluon.scheduler.Task.__init__()=web2py.gluon.scheduler.Task-class.html#__init__,Method web2py.gluon.scheduler.TaskReport.__init__()=web2py.gluon.scheduler.TaskReport-class.html#__init__,Method web2py.gluon.sqlhtml.AutocompleteWidget.__init__()=web2py.gluon.sqlhtml.AutocompleteWidget-class.html#__init__,Method web2py.gluon.sqlhtml.SQLFORM.__init__()=web2py.gluon.sqlhtml.SQLFORM-class.html#__init__,Method web2py.gluon.sqlhtml.SQLTABLE.__init__()=web2py.gluon.sqlhtml.SQLTABLE-class.html#__init__,Method web2py.gluon.storage.Messages.__init__()=web2py.gluon.storage.Messages-class.html#__init__,Method web2py.gluon.template.BlockNode.__init__()=web2py.gluon.template.BlockNode-class.html#__init__,Method web2py.gluon.template.Content.__init__()=web2py.gluon.template.Content-class.html#__init__,Method web2py.gluon.template.Node.__init__()=web2py.gluon.template.Node-class.html#__init__,Method web2py.gluon.template.SuperNode.__init__()=web2py.gluon.template.SuperNode-class.html#__init__,Method web2py.gluon.template.TemplateParser.__init__()=web2py.gluon.template.TemplateParser-class.html#__init__,Method web2py.gluon.tools.Auth.__init__()=web2py.gluon.tools.Auth-class.html#__init__,Method web2py.gluon.tools.Crud.__init__()=web2py.gluon.tools.Crud-class.html#__init__,Method web2py.gluon.tools.Expose.__init__()=web2py.gluon.tools.Expose-class.html#__init__,Method web2py.gluon.tools.Mail.Attachment.__init__()=web2py.gluon.tools.Mail.Attachment-class.html#__init__,Method web2py.gluon.tools.Mail.__init__()=web2py.gluon.tools.Mail-class.html#__init__,Method web2py.gluon.tools.PluginManager.__init__()=web2py.gluon.tools.PluginManager-class.html#__init__,Method web2py.gluon.tools.Recaptcha.__init__()=web2py.gluon.tools.Recaptcha-class.html#__init__,Method web2py.gluon.tools.Service.JsonRpcException.__init__()=web2py.gluon.tools.Service.JsonRpcException-class.html#__init__,Method web2py.gluon.tools.Service.__init__()=web2py.gluon.tools.Service-class.html#__init__,Method web2py.gluon.validators.CLEANUP.__init__()=web2py.gluon.validators.CLEANUP-class.html#__init__,Method web2py.gluon.validators.CRYPT.__init__()=web2py.gluon.validators.CRYPT-class.html#__init__,Method web2py.gluon.validators.IS_ALPHANUMERIC.__init__()=web2py.gluon.validators.IS_ALPHANUMERIC-class.html#__init__,Method web2py.gluon.validators.IS_DATE.__init__()=web2py.gluon.validators.IS_DATE-class.html#__init__,Method web2py.gluon.validators.IS_DATETIME.__init__()=web2py.gluon.validators.IS_DATETIME-class.html#__init__,Method web2py.gluon.validators.IS_DATETIME_IN_RANGE.__init__()=web2py.gluon.validators.IS_DATETIME_IN_RANGE-class.html#__init__,Method web2py.gluon.validators.IS_DATE_IN_RANGE.__init__()=web2py.gluon.validators.IS_DATE_IN_RANGE-class.html#__init__,Method web2py.gluon.validators.IS_DECIMAL_IN_RANGE.__init__()=web2py.gluon.validators.IS_DECIMAL_IN_RANGE-class.html#__init__,Method web2py.gluon.validators.IS_EMAIL.__init__()=web2py.gluon.validators.IS_EMAIL-class.html#__init__,Method web2py.gluon.validators.IS_EMPTY_OR.__init__()=web2py.gluon.validators.IS_EMPTY_OR-class.html#__init__,Method web2py.gluon.validators.IS_EQUAL_TO.__init__()=web2py.gluon.validators.IS_EQUAL_TO-class.html#__init__,Method web2py.gluon.validators.IS_EXPR.__init__()=web2py.gluon.validators.IS_EXPR-class.html#__init__,Method web2py.gluon.validators.IS_FLOAT_IN_RANGE.__init__()=web2py.gluon.validators.IS_FLOAT_IN_RANGE-class.html#__init__,Method web2py.gluon.validators.IS_GENERIC_URL.__init__()=web2py.gluon.validators.IS_GENERIC_URL-class.html#__init__,Method web2py.gluon.validators.IS_HTTP_URL.__init__()=web2py.gluon.validators.IS_HTTP_URL-class.html#__init__,Method web2py.gluon.validators.IS_IMAGE.__init__()=web2py.gluon.validators.IS_IMAGE-class.html#__init__,Method web2py.gluon.validators.IS_INT_IN_RANGE.__init__()=web2py.gluon.validators.IS_INT_IN_RANGE-class.html#__init__,Method web2py.gluon.validators.IS_IN_DB.__init__()=web2py.gluon.validators.IS_IN_DB-class.html#__init__,Method web2py.gluon.validators.IS_IN_SET.__init__()=web2py.gluon.validators.IS_IN_SET-class.html#__init__,Method web2py.gluon.validators.IS_IN_SUBSET.__init__()=web2py.gluon.validators.IS_IN_SUBSET-class.html#__init__,Method web2py.gluon.validators.IS_IPV4.__init__()=web2py.gluon.validators.IS_IPV4-class.html#__init__,Method web2py.gluon.validators.IS_LENGTH.__init__()=web2py.gluon.validators.IS_LENGTH-class.html#__init__,Method web2py.gluon.validators.IS_LIST_OF.__init__()=web2py.gluon.validators.IS_LIST_OF-class.html#__init__,Method web2py.gluon.validators.IS_MATCH.__init__()=web2py.gluon.validators.IS_MATCH-class.html#__init__,Method web2py.gluon.validators.IS_NOT_EMPTY.__init__()=web2py.gluon.validators.IS_NOT_EMPTY-class.html#__init__,Method web2py.gluon.validators.IS_NOT_IN_DB.__init__()=web2py.gluon.validators.IS_NOT_IN_DB-class.html#__init__,Method web2py.gluon.validators.IS_SLUG.__init__()=web2py.gluon.validators.IS_SLUG-class.html#__init__,Method web2py.gluon.validators.IS_STRONG.__init__()=web2py.gluon.validators.IS_STRONG-class.html#__init__,Method web2py.gluon.validators.IS_TIME.__init__()=web2py.gluon.validators.IS_TIME-class.html#__init__,Method web2py.gluon.validators.IS_UPLOAD_FILENAME.__init__()=web2py.gluon.validators.IS_UPLOAD_FILENAME-class.html#__init__,Method web2py.gluon.validators.IS_URL.__init__()=web2py.gluon.validators.IS_URL-class.html#__init__,Method web2py.gluon.widget.IO.__init__()=web2py.gluon.widget.IO-class.html#__init__,Method web2py.gluon.widget.web2pyDialog.__init__()=web2py.gluon.widget.web2pyDialog-class.html#__init__,Method web2py.gluon.winservice.Service.__init__()=web2py.gluon.winservice.Service-class.html#__init__"><a title="web2py.gluon.cache.Cache.__init__
web2py.gluon.cache.CacheAbstract.__init__
web2py.gluon.cache.CacheInRam.__init__
web2py.gluon.cache.CacheOnDisk.__init__
web2py.gluon.compileapp.LoadFactory.__init__
web2py.gluon.custom_import._DateTrackerImporter.__init__
web2py.gluon.custom_import._Web2pyImporter.__init__
web2py.gluon.dal.BaseAdapter.__init__
web2py.gluon.dal.CouchDBAdapter.__init__
web2py.gluon.dal.CubridAdapter.__init__
web2py.gluon.dal.DAL.__init__
web2py.gluon.dal.DB2Adapter.__init__
web2py.gluon.dal.DatabaseStoredFile.__init__
web2py.gluon.dal.Expression.__init__
web2py.gluon.dal.Field.__init__
web2py.gluon.dal.FieldLazy.__init__
web2py.gluon.dal.FieldVirtual.__init__
web2py.gluon.dal.FireBirdAdapter.__init__
web2py.gluon.dal.FireBirdEmbeddedAdapter.__init__
web2py.gluon.dal.GAEDecimalProperty.__init__
web2py.gluon.dal.GAEF.__init__
web2py.gluon.dal.GoogleDatastoreAdapter.__init__
web2py.gluon.dal.GoogleSQLAdapter.__init__
web2py.gluon.dal.IMAPAdapter.__init__
web2py.gluon.dal.InformixAdapter.__init__
web2py.gluon.dal.IngresAdapter.__init__
web2py.gluon.dal.JDBCPostgreSQLAdapter.__init__
web2py.gluon.dal.JDBCSQLiteAdapter.__init__
web2py.gluon.dal.MSSQLAdapter.__init__
web2py.gluon.dal.MongoDBAdapter.__init__
web2py.gluon.dal.MySQLAdapter.__init__
web2py.gluon.dal.OracleAdapter.__init__
web2py.gluon.dal.PostgreSQLAdapter.__init__
web2py.gluon.dal.Query.__init__
web2py.gluon.dal.Rows.__init__
web2py.gluon.dal.SAPDBAdapter.__init__
web2py.gluon.dal.SQLALL.__init__
web2py.gluon.dal.SQLCustomType.__init__
web2py.gluon.dal.SQLiteAdapter.__init__
web2py.gluon.dal.Set.__init__
web2py.gluon.dal.Table.__init__
web2py.gluon.dal.TeradataAdapter.__init__
web2py.gluon.dal.VirtualCommand.__init__
web2py.gluon.debug.Pipe.__init__
web2py.gluon.debug.WebDebugger.__init__
web2py.gluon.globals.Request.__init__
web2py.gluon.globals.Response.__init__
web2py.gluon.highlight.Highlighter.__init__
web2py.gluon.html.BEAUTIFY.__init__
web2py.gluon.html.DIV.__init__
web2py.gluon.html.FORM.__init__
web2py.gluon.html.MARKMIN.__init__
web2py.gluon.html.MENU.__init__
web2py.gluon.html.XML.__init__
web2py.gluon.html.web2pyHTMLParser.__init__
web2py.gluon.http.HTTP.__init__
web2py.gluon.languages.lazyT.__init__
web2py.gluon.languages.translator.__init__
web2py.gluon.main.HttpServer.__init__
web2py.gluon.newcron.Token.__init__
web2py.gluon.newcron.cronlauncher.__init__
web2py.gluon.newcron.extcron.__init__
web2py.gluon.newcron.hardcron.__init__
web2py.gluon.newcron.softcron.__init__
web2py.gluon.portalocker.LockedFile.__init__
web2py.gluon.restricted.RestrictedError.__init__
web2py.gluon.restricted.TicketStorage.__init__
web2py.gluon.rewrite.MapUrlIn.__init__
web2py.gluon.rewrite.MapUrlOut.__init__
web2py.gluon.rocket.ChunkedReader.__init__
web2py.gluon.rocket.Connection.__init__
web2py.gluon.rocket.FileLikeSocket.__init__
web2py.gluon.rocket.FileSystemWorker.__init__
web2py.gluon.rocket.FuturesMiddleware.__init__
web2py.gluon.rocket.LimitingFileWrapper.__init__
web2py.gluon.rocket.Listener.__init__
web2py.gluon.rocket.Monitor.__init__
web2py.gluon.rocket.Rocket.__init__
web2py.gluon.rocket.ThreadPool.__init__
web2py.gluon.rocket.WSGIExecutor.__init__
web2py.gluon.rocket.WSGIFuture.__init__
web2py.gluon.rocket.WSGIWorker.__init__
web2py.gluon.rocket.Worker.__init__
web2py.gluon.rocket._WorkItem.__init__
web2py.gluon.sanitizer.XssCleaner.__init__
web2py.gluon.scheduler.MetaScheduler.__init__
web2py.gluon.scheduler.Scheduler.__init__
web2py.gluon.scheduler.TYPE.__init__
web2py.gluon.scheduler.Task.__init__
web2py.gluon.scheduler.TaskReport.__init__
web2py.gluon.sqlhtml.AutocompleteWidget.__init__
web2py.gluon.sqlhtml.SQLFORM.__init__
web2py.gluon.sqlhtml.SQLTABLE.__init__
web2py.gluon.storage.Messages.__init__
web2py.gluon.template.BlockNode.__init__
web2py.gluon.template.Content.__init__
web2py.gluon.template.Node.__init__
web2py.gluon.template.SuperNode.__init__
web2py.gluon.template.TemplateParser.__init__
web2py.gluon.tools.Auth.__init__
web2py.gluon.tools.Crud.__init__
web2py.gluon.tools.Expose.__init__
web2py.gluon.tools.Mail.Attachment.__init__
web2py.gluon.tools.Mail.__init__
web2py.gluon.tools.PluginManager.__init__
web2py.gluon.tools.Recaptcha.__init__
web2py.gluon.tools.Service.JsonRpcException.__init__
web2py.gluon.tools.Service.__init__
web2py.gluon.validators.CLEANUP.__init__
web2py.gluon.validators.CRYPT.__init__
web2py.gluon.validators.IS_ALPHANUMERIC.__init__
web2py.gluon.validators.IS_DATE.__init__
web2py.gluon.validators.IS_DATETIME.__init__
web2py.gluon.validators.IS_DATETIME_IN_RANGE.__init__
web2py.gluon.validators.IS_DATE_IN_RANGE.__init__
web2py.gluon.validators.IS_DECIMAL_IN_RANGE.__init__
web2py.gluon.validators.IS_EMAIL.__init__
web2py.gluon.validators.IS_EMPTY_OR.__init__
web2py.gluon.validators.IS_EQUAL_TO.__init__
web2py.gluon.validators.IS_EXPR.__init__
web2py.gluon.validators.IS_FLOAT_IN_RANGE.__init__
web2py.gluon.validators.IS_GENERIC_URL.__init__
web2py.gluon.validators.IS_HTTP_URL.__init__
web2py.gluon.validators.IS_IMAGE.__init__
web2py.gluon.validators.IS_INT_IN_RANGE.__init__
web2py.gluon.validators.IS_IN_DB.__init__
web2py.gluon.validators.IS_IN_SET.__init__
web2py.gluon.validators.IS_IN_SUBSET.__init__
web2py.gluon.validators.IS_IPV4.__init__
web2py.gluon.validators.IS_LENGTH.__init__
web2py.gluon.validators.IS_LIST_OF.__init__
web2py.gluon.validators.IS_MATCH.__init__
web2py.gluon.validators.IS_NOT_EMPTY.__init__
web2py.gluon.validators.IS_NOT_IN_DB.__init__
web2py.gluon.validators.IS_SLUG.__init__
web2py.gluon.validators.IS_STRONG.__init__
web2py.gluon.validators.IS_TIME.__init__
web2py.gluon.validators.IS_UPLOAD_FILENAME.__init__
web2py.gluon.validators.IS_URL.__init__
web2py.gluon.widget.IO.__init__
web2py.gluon.widget.web2pyDialog.__init__
web2py.gluon.winservice.Service.__init__" class="py-name" href="#" onclick="return doclink('link-405', '__init__', 'link-405');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">components</tt><tt class="py-op">,</tt>  <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt> <tt class="py-op">=</tt> <tt id="link-406" class="py-name"><a title="web2py.gluon.storage.Storage" class="py-name" href="#" onclick="return doclink('link-406', 'Storage', 'link-6');">Storage</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt id="link-407" class="py-name"><a title="web2py.gluon.storage.Storage" class="py-name" href="#" onclick="return doclink('link-407', 'Storage', 'link-6');">Storage</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt id="link-408" class="py-name"><a title="web2py.gluon.storage.Storage" class="py-name" href="#" onclick="return doclink('link-408', 'Storage', 'link-6');">Storage</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">accepted</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># none for not submitted</tt> </tt>
</div><a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"> </tt>
<a name="FORM.accepts"></a><div id="FORM.accepts-def"><a name="L1803"></a><tt class="py-lineno">1803</tt> <a class="py-toggle" href="#" id="FORM.accepts-toggle" onclick="return toggle('FORM.accepts');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#accepts">accepts</a><tt class="py-op">(</tt> </tt>
<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line">        <tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">        <tt class="py-param">request_vars</tt><tt class="py-op">,</tt> </tt>
<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">        <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line">        <tt class="py-param">formname</tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt><tt class="py-op">,</tt> </tt>
<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">        <tt class="py-param">keepvalues</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">        <tt class="py-param">onvalidation</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">        <tt class="py-param">hideerror</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">        <tt class="py-op">**</tt><tt class="py-param">kwargs</tt> </tt>
<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">        <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.accepts-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.accepts-expanded"><a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line"><tt class="py-docstring">        kwargs is not used but allows to specify the same interface for FROM and SQLFORM</tt> </tt>
<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'Request'</tt><tt class="py-op">:</tt> </tt>
<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">            <tt class="py-name">request_vars</tt><tt class="py-op">=</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt class="py-name">post_vars</tt> </tt>
<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name" targets="Method web2py.gluon.cache.CacheAbstract.clear()=web2py.gluon.cache.CacheAbstract-class.html#clear,Method web2py.gluon.cache.CacheInRam.clear()=web2py.gluon.cache.CacheInRam-class.html#clear,Method web2py.gluon.cache.CacheOnDisk.clear()=web2py.gluon.cache.CacheOnDisk-class.html#clear"><a title="web2py.gluon.cache.CacheAbstract.clear
web2py.gluon.cache.CacheInRam.clear
web2py.gluon.cache.CacheOnDisk.clear" class="py-name" href="#" onclick="return doclink('link-409', 'clear', 'link-409');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt> <tt class="py-op">=</tt> <tt id="link-410" class="py-name"><a title="web2py.gluon.storage.Storage" class="py-name" href="#" onclick="return doclink('link-410', 'Storage', 'link-6');">Storage</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt id="link-411" class="py-name" targets="Method web2py.gluon.dal.BaseAdapter.update()=web2py.gluon.dal.BaseAdapter-class.html#update,Method web2py.gluon.dal.CouchDBAdapter.update()=web2py.gluon.dal.CouchDBAdapter-class.html#update,Method web2py.gluon.dal.GoogleDatastoreAdapter.update()=web2py.gluon.dal.GoogleDatastoreAdapter-class.html#update,Method web2py.gluon.dal.IMAPAdapter.update()=web2py.gluon.dal.IMAPAdapter-class.html#update,Method web2py.gluon.dal.MongoDBAdapter.update()=web2py.gluon.dal.MongoDBAdapter-class.html#update,Method web2py.gluon.dal.Set.update()=web2py.gluon.dal.Set-class.html#update,Method web2py.gluon.dal.Table.update()=web2py.gluon.dal.Table-class.html#update,Method web2py.gluon.html.DIV.update()=web2py.gluon.html.DIV-class.html#update,Method web2py.gluon.tools.Crud.update()=web2py.gluon.tools.Crud-class.html#update,Method web2py.gluon.widget.web2pyDialog.update()=web2py.gluon.widget.web2pyDialog-class.html#update"><a title="web2py.gluon.dal.BaseAdapter.update
web2py.gluon.dal.CouchDBAdapter.update
web2py.gluon.dal.GoogleDatastoreAdapter.update
web2py.gluon.dal.IMAPAdapter.update
web2py.gluon.dal.MongoDBAdapter.update
web2py.gluon.dal.Set.update
web2py.gluon.dal.Table.update
web2py.gluon.html.DIV.update
web2py.gluon.tools.Crud.update
web2py.gluon.widget.web2pyDialog.update" class="py-name" href="#" onclick="return doclink('link-411', 'update', 'link-411');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">request_vars</tt><tt class="py-op">)</tt> </tt>
<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-412', 'session', 'link-44');">session</a></tt> <tt class="py-op">=</tt> <tt id="link-413" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-413', 'session', 'link-44');">session</a></tt> </tt>
<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt> <tt class="py-op">=</tt> <tt class="py-name">formname</tt> </tt>
<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keepvalues</tt> <tt class="py-op">=</tt> <tt class="py-name">keepvalues</tt> </tt>
<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line"> </tt>
<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt class="py-comment"># if this tag is a form and we are in accepting mode (status=True)</tt> </tt>
<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># check formname and formkey</tt> </tt>
<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">        <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-414', 'session', 'link-44');">session</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">            <tt class="py-name">formkey</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-415', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-416', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_formkey[%s]'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line">            <tt class="py-comment"># check if user tampering with form and void CSRF</tt> </tt>
<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">formkey</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt class="py-name">_formkey</tt><tt class="py-op">:</tt> </tt>
<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line">                <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_vars</tt><tt class="py-op">.</tt><tt class="py-name">_formname</tt><tt class="py-op">:</tt> </tt>
<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">            <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">status</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-417', 'session', 'link-44');">session</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">            <tt class="py-comment"># check if editing a record that has been modified by the server</tt> </tt>
<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'record_hash'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">record_hash</tt> <tt class="py-op">!=</tt> <tt class="py-name">formkey</tt><tt class="py-op">:</tt> </tt>
<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">                <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">record_changed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="web2py.gluon.html.DIV._traverse" class="py-name" href="#" onclick="return doclink('link-418', '_traverse', 'link-118');">_traverse</a></tt><tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt><tt class="py-name">hideerror</tt><tt class="py-op">)</tt> </tt>
<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">onvalidation</tt><tt class="py-op">:</tt> </tt>
<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">onvalidation</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">                <tt class="py-name">onsuccess</tt> <tt class="py-op">=</tt> <tt class="py-name">onvalidation</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-419', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'onsuccess'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">                <tt class="py-name">onfailure</tt> <tt class="py-op">=</tt> <tt class="py-name">onvalidation</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-420', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'onfailure'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">onsuccess</tt> <tt class="py-keyword">and</tt> <tt class="py-name">status</tt><tt class="py-op">:</tt> </tt>
<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">                    <tt class="py-name">onsuccess</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">onfailure</tt> <tt class="py-keyword">and</tt> <tt class="py-name">request_vars</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">status</tt><tt class="py-op">:</tt> </tt>
<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">                    <tt class="py-name">onfailure</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line">                    <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt id="link-421" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-421', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> </tt>
<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">status</tt><tt class="py-op">:</tt> </tt>
<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">onvalidation</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">                    <tt class="py-op">[</tt><tt class="py-name">f</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">onvalidation</tt><tt class="py-op">]</tt> </tt>
<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">                    <tt class="py-name">onvalidation</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">:</tt> </tt>
<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">            <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-422" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-422', 'session', 'link-44');">session</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'record_hash'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">                <tt class="py-name">formkey</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">record_hash</tt> </tt>
<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">                <tt class="py-name">formkey</tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="web2py.gluon.utils.web2py_uuid" class="py-name" href="#" onclick="return doclink('link-423', 'web2py_uuid', 'link-10');">web2py_uuid</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formkey</tt> <tt class="py-op">=</tt> <tt id="link-424" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-424', 'session', 'link-44');">session</a></tt><tt class="py-op">[</tt><tt class="py-string">'_formkey[%s]'</tt> <tt class="py-op">%</tt> <tt class="py-name">formname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">formkey</tt> </tt>
<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">status</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">keepvalues</tt><tt class="py-op">:</tt> </tt>
<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="web2py.gluon.html.DIV._traverse" class="py-name" href="#" onclick="return doclink('link-425', '_traverse', 'link-118');">_traverse</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt><tt class="py-name">hideerror</tt><tt class="py-op">)</tt> </tt>
<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">accepted</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">status</tt> </tt>
</div><a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line"> </tt>
<a name="FORM._postprocessing"></a><div id="FORM._postprocessing-def"><a name="L1869"></a><tt class="py-lineno">1869</tt> <a class="py-toggle" href="#" id="FORM._postprocessing-toggle" onclick="return toggle('FORM._postprocessing');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#_postprocessing">_postprocessing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM._postprocessing-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM._postprocessing-expanded"><a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_action'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_action'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_method'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_method'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'post'</tt> </tt>
<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_enctype'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_enctype'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'multipart/form-data'</tt> </tt>
</div><a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"> </tt>
<a name="FORM.hidden_fields"></a><div id="FORM.hidden_fields-def"><a name="L1877"></a><tt class="py-lineno">1877</tt> <a class="py-toggle" href="#" id="FORM.hidden_fields-toggle" onclick="return toggle('FORM.hidden_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#hidden_fields">hidden_fields</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.hidden_fields-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.hidden_fields-expanded"><a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'hidden'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-426', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hidden'</tt><tt class="py-op">,</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">                <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-427', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-428" class="py-name" targets="Class web2py.gluon.html.INPUT=web2py.gluon.html.INPUT-class.html"><a title="web2py.gluon.html.INPUT" class="py-name" href="#" onclick="return doclink('link-428', 'INPUT', 'link-428');">INPUT</a></tt><tt class="py-op">(</tt><tt class="py-name">_type</tt><tt class="py-op">=</tt><tt class="py-string">'hidden'</tt><tt class="py-op">,</tt> <tt class="py-name">_name</tt><tt class="py-op">=</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"> </tt>
<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'formkey'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formkey</tt><tt class="py-op">:</tt> </tt>
<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-429', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-430" class="py-name"><a title="web2py.gluon.html.INPUT" class="py-name" href="#" onclick="return doclink('link-430', 'INPUT', 'link-428');">INPUT</a></tt><tt class="py-op">(</tt><tt class="py-name">_type</tt><tt class="py-op">=</tt><tt class="py-string">'hidden'</tt><tt class="py-op">,</tt> <tt class="py-name">_name</tt><tt class="py-op">=</tt><tt class="py-string">'_formkey'</tt><tt class="py-op">,</tt> </tt>
<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">                     <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formkey</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'formname'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt><tt class="py-op">:</tt> </tt>
<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-431', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-432" class="py-name"><a title="web2py.gluon.html.INPUT" class="py-name" href="#" onclick="return doclink('link-432', 'INPUT', 'link-428');">INPUT</a></tt><tt class="py-op">(</tt><tt class="py-name">_type</tt><tt class="py-op">=</tt><tt class="py-string">'hidden'</tt><tt class="py-op">,</tt> <tt class="py-name">_name</tt><tt class="py-op">=</tt><tt class="py-string">'_formname'</tt><tt class="py-op">,</tt> </tt>
<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line">                     <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">formname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-433" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-433', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt id="link-434" class="py-name"><a title="web2py.gluon.sqlhtml.AutocompleteWidget._class
web2py.gluon.sqlhtml.BooleanWidget._class
web2py.gluon.sqlhtml.DateWidget._class
web2py.gluon.sqlhtml.DatetimeWidget._class
web2py.gluon.sqlhtml.DecimalWidget._class
web2py.gluon.sqlhtml.DoubleWidget._class
web2py.gluon.sqlhtml.FormWidget._class
web2py.gluon.sqlhtml.IntegerWidget._class
web2py.gluon.sqlhtml.PasswordWidget._class
web2py.gluon.sqlhtml.StringWidget._class
web2py.gluon.sqlhtml.TextWidget._class
web2py.gluon.sqlhtml.TimeWidget._class
web2py.gluon.sqlhtml.UploadWidget._class" class="py-name" href="#" onclick="return doclink('link-434', '_class', 'link-376');">_class</a></tt><tt class="py-op">=</tt><tt class="py-string">"hidden"</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"> </tt>
<a name="FORM.xml"></a><div id="FORM.xml-def"><a name="L1891"></a><tt class="py-lineno">1891</tt> <a class="py-toggle" href="#" id="FORM.xml-toggle" onclick="return toggle('FORM.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.xml-expanded"><a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">        <tt class="py-name">newform</tt> <tt class="py-op">=</tt> <tt id="link-435" class="py-name" targets="Class web2py.gluon.html.FORM=web2py.gluon.html.FORM-class.html"><a title="web2py.gluon.html.FORM" class="py-name" href="#" onclick="return doclink('link-435', 'FORM', 'link-435');">FORM</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line">        <tt id="link-436" class="py-name" targets="Method web2py.gluon.html.FORM.hidden_fields()=web2py.gluon.html.FORM-class.html#hidden_fields"><a title="web2py.gluon.html.FORM.hidden_fields" class="py-name" href="#" onclick="return doclink('link-436', 'hidden_fields', 'link-436');">hidden_fields</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="web2py.gluon.html.FORM.hidden_fields" class="py-name" href="#" onclick="return doclink('link-437', 'hidden_fields', 'link-436');">hidden_fields</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-438" class="py-name"><a title="web2py.gluon.html.FORM.hidden_fields" class="py-name" href="#" onclick="return doclink('link-438', 'hidden_fields', 'link-436');">hidden_fields</a></tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">            <tt class="py-name">newform</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-439', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-440" class="py-name"><a title="web2py.gluon.html.FORM.hidden_fields" class="py-name" href="#" onclick="return doclink('link-440', 'hidden_fields', 'link-436');">hidden_fields</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-441" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-441', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-442', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-name">newform</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"> </tt>
<a name="FORM.validate"></a><div id="FORM.validate-def"><a name="L1898"></a><tt class="py-lineno">1898</tt> <a class="py-toggle" href="#" id="FORM.validate-toggle" onclick="return toggle('FORM.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.validate-expanded"><a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line"><tt class="py-docstring">        This function validates the form,</tt> </tt>
<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"><tt class="py-docstring">        you can use it instead of directly form.accepts.</tt> </tt>
<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"><tt class="py-docstring">        Usage:</tt> </tt>
<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line"><tt class="py-docstring">        In controller</tt> </tt>
<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line"><tt class="py-docstring">        def action():</tt> </tt>
<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"><tt class="py-docstring">            form=FORM(INPUT(_name=\"test\", requires=IS_NOT_EMPTY()))</tt> </tt>
<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"><tt class="py-docstring">            form.validate() #you can pass some args here - see below</tt> </tt>
<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line"><tt class="py-docstring">            return dict(form=form)</tt> </tt>
<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line"><tt class="py-docstring">        This can receive a bunch of arguments</tt> </tt>
<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line"><tt class="py-docstring">        onsuccess = 'flash' - will show message_onsuccess in response.flash</tt> </tt>
<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line"><tt class="py-docstring">                    None - will do nothing</tt> </tt>
<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"><tt class="py-docstring">                    can be a function (lambda form: pass)</tt> </tt>
<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line"><tt class="py-docstring">        onfailure = 'flash' - will show message_onfailure in response.flash</tt> </tt>
<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"><tt class="py-docstring">                    None - will do nothing</tt> </tt>
<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line"><tt class="py-docstring">                    can be a function (lambda form: pass)</tt> </tt>
<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line"><tt class="py-docstring">        message_onsuccess</tt> </tt>
<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line"><tt class="py-docstring">        message_onfailure</tt> </tt>
<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"><tt class="py-docstring">        next      = where to redirect in case of success</tt> </tt>
<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line"><tt class="py-docstring">        any other kwargs will be passed for form.accepts(...)</tt> </tt>
<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-443" class="py-name" targets="Package web2py.gluon=web2py.gluon-module.html"><a title="web2py.gluon" class="py-name" href="#" onclick="return doclink('link-443', 'gluon', 'link-443');">gluon</a></tt> <tt class="py-keyword">import</tt> <tt id="link-444" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-444', 'current', 'link-24');">current</a></tt><tt class="py-op">,</tt> <tt id="link-445" class="py-name" targets="Function web2py.gluon.http.redirect()=web2py.gluon.http-module.html#redirect"><a title="web2py.gluon.http.redirect" class="py-name" href="#" onclick="return doclink('link-445', 'redirect', 'link-445');">redirect</a></tt> </tt>
<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">        <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'request_vars'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-446', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'request_vars'</tt><tt class="py-op">,</tt><tt id="link-447" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-447', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="web2py.gluon.request" class="py-name" href="#" onclick="return doclink('link-448', 'request', 'link-27');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">post_vars</tt><tt class="py-op">)</tt> </tt>
<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">        <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'session'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-449', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'session'</tt><tt class="py-op">,</tt><tt id="link-450" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-450', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-451', 'session', 'link-44');">session</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'dbio'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-452', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'dbio'</tt><tt class="py-op">,</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-comment"># necessary for SQLHTML forms</tt> </tt>
<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"> </tt>
<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">        <tt class="py-name">onsuccess</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-453', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'onsuccess'</tt><tt class="py-op">,</tt><tt class="py-string">'flash'</tt><tt class="py-op">)</tt> </tt>
<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">        <tt class="py-name">onfailure</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-454', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'onfailure'</tt><tt class="py-op">,</tt><tt class="py-string">'flash'</tt><tt class="py-op">)</tt> </tt>
<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">        <tt class="py-name">message_onsuccess</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-455', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'message_onsuccess'</tt><tt class="py-op">,</tt> </tt>
<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line">                                       <tt id="link-456" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-456', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-457" class="py-name" targets="Variable web2py.gluon.T=web2py.gluon-module.html#T,Variable web2py.gluon.languages.lazyT.T=web2py.gluon.languages.lazyT-class.html#T"><a title="web2py.gluon.T
web2py.gluon.languages.lazyT.T" class="py-name" href="#" onclick="return doclink('link-457', 'T', 'link-457');">T</a></tt><tt class="py-op">(</tt><tt class="py-string">"Success!"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">        <tt class="py-name">message_onfailure</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-458', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'message_onfailure'</tt><tt class="py-op">,</tt> </tt>
<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">                                       <tt id="link-459" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-459', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="web2py.gluon.T
web2py.gluon.languages.lazyT.T" class="py-name" href="#" onclick="return doclink('link-460', 'T', 'link-457');">T</a></tt><tt class="py-op">(</tt><tt class="py-string">"Errors in form, please check it out."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line">        <tt id="link-461" class="py-name" targets="Method web2py.gluon.rocket.FileLikeSocket.next()=web2py.gluon.rocket.FileLikeSocket-class.html#next"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-461', 'next', 'link-461');">next</a></tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-462', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'next'</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'message_onsuccess'</tt><tt class="py-op">,</tt><tt class="py-string">'message_onfailure'</tt><tt class="py-op">,</tt><tt class="py-string">'onsuccess'</tt><tt class="py-op">,</tt> </tt>
<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">                    <tt class="py-string">'onfailure'</tt><tt class="py-op">,</tt><tt class="py-string">'next'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line"> </tt>
<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-463" class="py-name" targets="Method web2py.gluon.html.FORM.accepts()=web2py.gluon.html.FORM-class.html#accepts,Method web2py.gluon.sqlhtml.SQLFORM.accepts()=web2py.gluon.sqlhtml.SQLFORM-class.html#accepts"><a title="web2py.gluon.html.FORM.accepts
web2py.gluon.sqlhtml.SQLFORM.accepts" class="py-name" href="#" onclick="return doclink('link-463', 'accepts', 'link-463');">accepts</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">onsuccess</tt> <tt class="py-op">==</tt> <tt class="py-string">'flash'</tt><tt class="py-op">:</tt> </tt>
<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-464" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-464', 'next', 'link-461');">next</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">                    <tt id="link-465" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-465', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="web2py.gluon.session" class="py-name" href="#" onclick="return doclink('link-466', 'session', 'link-44');">session</a></tt><tt class="py-op">.</tt><tt class="py-name">flash</tt> <tt class="py-op">=</tt> <tt class="py-name">message_onsuccess</tt> </tt>
<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">                    <tt id="link-467" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-467', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-468" class="py-name" targets="Variable web2py.gluon.response=web2py.gluon-module.html#response"><a title="web2py.gluon.response" class="py-name" href="#" onclick="return doclink('link-468', 'response', 'link-468');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">flash</tt> <tt class="py-op">=</tt> <tt class="py-name">message_onsuccess</tt> </tt>
<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">onsuccess</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">                <tt class="py-name">onsuccess</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-469" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-469', 'next', 'link-461');">next</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">:</tt> </tt>
<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">                        <tt id="link-470" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-470', 'next', 'link-461');">next</a></tt> <tt class="py-op">=</tt> <tt id="link-471" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-471', 'next', 'link-461');">next</a></tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'[%s]'</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> </tt>
<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">                                            <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-472" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-472', 'next', 'link-461');">next</a></tt><tt class="py-op">.</tt><tt id="link-473" class="py-name" targets="Method web2py.gluon.dal.Expression.startswith()=web2py.gluon.dal.Expression-class.html#startswith,Method web2py.gluon.dal.SQLCustomType.startswith()=web2py.gluon.dal.SQLCustomType-class.html#startswith"><a title="web2py.gluon.dal.Expression.startswith
web2py.gluon.dal.SQLCustomType.startswith" class="py-name" href="#" onclick="return doclink('link-473', 'startswith', 'link-473');">startswith</a></tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">                        <tt id="link-474" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-474', 'next', 'link-461');">next</a></tt> <tt class="py-op">=</tt> <tt id="link-475" class="py-name"><a title="web2py.gluon.html.URL" class="py-name" href="#" onclick="return doclink('link-475', 'URL', 'link-85');">URL</a></tt><tt class="py-op">(</tt><tt id="link-476" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-476', 'next', 'link-461');">next</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">                <tt id="link-477" class="py-name"><a title="web2py.gluon.http.redirect" class="py-name" href="#" onclick="return doclink('link-477', 'redirect', 'link-445');">redirect</a></tt><tt class="py-op">(</tt><tt id="link-478" class="py-name"><a title="web2py.gluon.rocket.FileLikeSocket.next" class="py-name" href="#" onclick="return doclink('link-478', 'next', 'link-461');">next</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">:</tt> </tt>
<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">onfailure</tt> <tt class="py-op">==</tt> <tt class="py-string">'flash'</tt><tt class="py-op">:</tt> </tt>
<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">                <tt id="link-479" class="py-name"><a title="web2py.gluon.current
web2py.gluon.globals.current
web2py.gluon.tools.current" class="py-name" href="#" onclick="return doclink('link-479', 'current', 'link-24');">current</a></tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="web2py.gluon.response" class="py-name" href="#" onclick="return doclink('link-480', 'response', 'link-468');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">flash</tt> <tt class="py-op">=</tt> <tt class="py-name">message_onfailure</tt> </tt>
<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">onfailure</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">                <tt class="py-name">onfailure</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
</div><a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line"> </tt>
<a name="FORM.process"></a><div id="FORM.process-def"><a name="L1965"></a><tt class="py-lineno">1965</tt> <a class="py-toggle" href="#" id="FORM.process-toggle" onclick="return toggle('FORM.process');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.FORM-class.html#process">process</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FORM.process-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FORM.process-expanded"><a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line"><tt class="py-docstring">        Perform the .validate() method but returns the form</tt> </tt>
<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line"><tt class="py-docstring">        Usage in controllers:</tt> </tt>
<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line"><tt class="py-docstring">        # directly on return</tt> </tt>
<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line"><tt class="py-docstring">        def action():</tt> </tt>
<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line"><tt class="py-docstring">            #some code here</tt> </tt>
<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"><tt class="py-docstring">            return dict(form=FORM(...).process(...))</tt> </tt>
<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line"><tt class="py-docstring">        You can use it with FORM, SQLFORM or FORM based plugins</tt> </tt>
<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line"><tt class="py-docstring">        Examples:</tt> </tt>
<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line"><tt class="py-docstring">        #response.flash messages</tt> </tt>
<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"><tt class="py-docstring">        def action():</tt> </tt>
<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line"><tt class="py-docstring">            form = SQLFORM(db.table).process(message_onsuccess='Sucess!')</tt> </tt>
<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line"><tt class="py-docstring">            retutn dict(form=form)</tt> </tt>
<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line"><tt class="py-docstring">        # callback function</tt> </tt>
<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line"><tt class="py-docstring">        # callback receives True or False as first arg, and a list of args.</tt> </tt>
<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line"><tt class="py-docstring">        def my_callback(status, msg):</tt> </tt>
<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line"><tt class="py-docstring">           response.flash = "Success! "+msg if status else "Errors occured"</tt> </tt>
<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line"><tt class="py-docstring">        # after argument can be 'flash' to response.flash messages</tt> </tt>
<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line"><tt class="py-docstring">        # or a function name to use as callback or None to do nothing.</tt> </tt>
<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line"><tt class="py-docstring">        def action():</tt> </tt>
<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line"><tt class="py-docstring">            return dict(form=SQLFORM(db.table).process(onsuccess=my_callback)</tt> </tt>
<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">        <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'dbio'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-481', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'dbio'</tt><tt class="py-op">,</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-comment"># necessary for SQLHTML forms</tt> </tt>
<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name" targets="Method web2py.gluon.dal.Field.validate()=web2py.gluon.dal.Field-class.html#validate,Method web2py.gluon.dal.GAEDecimalProperty.validate()=web2py.gluon.dal.GAEDecimalProperty-class.html#validate,Method web2py.gluon.html.FORM.validate()=web2py.gluon.html.FORM-class.html#validate"><a title="web2py.gluon.dal.Field.validate
web2py.gluon.dal.GAEDecimalProperty.validate
web2py.gluon.html.FORM.validate" class="py-name" href="#" onclick="return doclink('link-482', 'validate', 'link-482');">validate</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
</div></div><a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line"> </tt>
<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line"> </tt>
<a name="BEAUTIFY"></a><div id="BEAUTIFY-def"><a name="L1998"></a><tt class="py-lineno">1998</tt> <a class="py-toggle" href="#" id="BEAUTIFY-toggle" onclick="return toggle('BEAUTIFY');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.BEAUTIFY-class.html">BEAUTIFY</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BEAUTIFY-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BEAUTIFY-expanded"><a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line"> </tt>
<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line"><tt class="py-docstring">    example::</tt> </tt>
<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; BEAUTIFY(['a', 'b', {'hello': 'world'}]).xml()</tt> </tt>
<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line"><tt class="py-docstring">        '&lt;div&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;a&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;b&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="font-weight:bold;"&gt;hello&lt;/td&gt;&lt;td valign="top"&gt;:&lt;/td&gt;&lt;td&gt;&lt;div&gt;world&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;'</tt> </tt>
<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line"><tt class="py-docstring">    turns any list, dictionary, etc into decent looking html.</tt> </tt>
<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line"><tt class="py-docstring">    Two special attributes are</tt> </tt>
<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line"><tt class="py-docstring">    :sorted: a function that takes the dict and returned sorted keys</tt> </tt>
<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line"><tt class="py-docstring">    :keyfilter: a funciton that takes a key and returns its representation</tt> </tt>
<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line"><tt class="py-docstring">                or None if the key is to be skipped. By default key[:1]=='_' is skipped.</tt> </tt>
<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line"> </tt>
<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line">    <tt id="link-483" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-483', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'div'</tt> </tt>
<a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line"> </tt>
<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
<a name="BEAUTIFY.no_underscore"></a><div id="BEAUTIFY.no_underscore-def"><a name="L2016"></a><tt class="py-lineno">2016</tt> <a class="py-toggle" href="#" id="BEAUTIFY.no_underscore-toggle" onclick="return toggle('BEAUTIFY.no_underscore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.BEAUTIFY-class.html#no_underscore">no_underscore</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BEAUTIFY.no_underscore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BEAUTIFY.no_underscore-expanded"><a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'_'</tt><tt class="py-op">:</tt> </tt>
<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> </tt>
</div><a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line"> </tt>
<a name="BEAUTIFY.__init__"></a><div id="BEAUTIFY.__init__-def"><a name="L2021"></a><tt class="py-lineno">2021</tt> <a class="py-toggle" href="#" id="BEAUTIFY.__init__-toggle" onclick="return toggle('BEAUTIFY.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.BEAUTIFY-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">component</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">attributes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BEAUTIFY.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BEAUTIFY.__init__-expanded"><a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">component</tt><tt class="py-op">]</tt> </tt>
<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt> </tt>
<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">        <tt class="py-name">sorter</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-484', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'sorted'</tt><tt class="py-op">,</tt><tt class="py-name">sorted</tt><tt class="py-op">)</tt> </tt>
<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">        <tt class="py-name">keyfilter</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-485', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'keyfilter'</tt><tt class="py-op">,</tt><tt id="link-486" class="py-name" targets="Class web2py.gluon.html.BEAUTIFY=web2py.gluon.html.BEAUTIFY-class.html"><a title="web2py.gluon.html.BEAUTIFY" class="py-name" href="#" onclick="return doclink('link-486', 'BEAUTIFY', 'link-486');">BEAUTIFY</a></tt><tt class="py-op">.</tt><tt id="link-487" class="py-name" targets="Static Method web2py.gluon.html.BEAUTIFY.no_underscore()=web2py.gluon.html.BEAUTIFY-class.html#no_underscore"><a title="web2py.gluon.html.BEAUTIFY.no_underscore" class="py-name" href="#" onclick="return doclink('link-487', 'no_underscore', 'link-487');">no_underscore</a></tt><tt class="py-op">)</tt> </tt>
<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line">        <tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">        <tt class="py-name">level</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'level'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-488" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-488', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'level'</tt><tt class="py-op">,</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'_class'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">'i'</tt> </tt>
<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt><tt class="py-op">:</tt> </tt>
<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-string">'xml'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-489', 'xml', 'link-15');">xml</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-490', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-string">'keys'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-491" class="py-name" targets="Method web2py.gluon.tools.PluginManager.keys()=web2py.gluon.tools.PluginManager-class.html#keys"><a title="web2py.gluon.tools.PluginManager.keys" class="py-name" href="#" onclick="return doclink('link-491', 'keys', 'link-491');">keys</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">                <tt id="link-492" class="py-name" targets="Method web2py.gluon.tools.Crud.rows()=web2py.gluon.tools.Crud-class.html#rows"><a title="web2py.gluon.tools.Crud.rows" class="py-name" href="#" onclick="return doclink('link-492', 'rows', 'link-492');">rows</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">                    <tt id="link-493" class="py-name"><a title="web2py.gluon.tools.PluginManager.keys" class="py-name" href="#" onclick="return doclink('link-493', 'keys', 'link-491');">keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">sorter</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sorter</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">c</tt> </tt>
<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-494" class="py-name"><a title="web2py.gluon.tools.PluginManager.keys" class="py-name" href="#" onclick="return doclink('link-494', 'keys', 'link-491');">keys</a></tt><tt class="py-op">:</tt> </tt>
<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">keyfilter</tt><tt class="py-op">:</tt> </tt>
<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">                            <tt class="py-name">filtered_key</tt> <tt class="py-op">=</tt> <tt class="py-name">keyfilter</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">                            <tt class="py-name">filtered_key</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">filtered_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line">                            <tt class="py-keyword">continue</tt> </tt>
<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">                        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-495" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.types
web2py.gluon.dal.CouchDBAdapter.types
web2py.gluon.dal.DB2Adapter.types
web2py.gluon.dal.FireBirdAdapter.types
web2py.gluon.dal.GoogleDatastoreAdapter.types
web2py.gluon.dal.IMAPAdapter.types
web2py.gluon.dal.InformixAdapter.types
web2py.gluon.dal.IngresAdapter.types
web2py.gluon.dal.IngresUnicodeAdapter.types
web2py.gluon.dal.MSSQL2Adapter.types
web2py.gluon.dal.MSSQLAdapter.types
web2py.gluon.dal.MongoDBAdapter.types
web2py.gluon.dal.MySQLAdapter.types
web2py.gluon.dal.OracleAdapter.types
web2py.gluon.dal.PostgreSQLAdapter.types
web2py.gluon.dal.SAPDBAdapter.types
web2py.gluon.dal.TeradataAdapter.types" class="py-name" href="#" onclick="return doclink('link-495', 'types', 'link-0');">types</a></tt><tt class="py-op">.</tt><tt class="py-name">LambdaType</tt><tt class="py-op">:</tt> </tt>
<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">                            <tt class="py-keyword">continue</tt> </tt>
<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line">                        <tt id="link-496" class="py-name"><a title="web2py.gluon.tools.Crud.rows" class="py-name" href="#" onclick="return doclink('link-496', 'rows', 'link-492');">rows</a></tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-497', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-498" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-498', 'TR', 'link-323');">TR</a></tt><tt class="py-op">(</tt><tt id="link-499" class="py-name"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-499', 'TD', 'link-318');">TD</a></tt><tt class="py-op">(</tt><tt class="py-name">filtered_key</tt><tt class="py-op">,</tt> <tt class="py-name">_style</tt><tt class="py-op">=</tt><tt class="py-string">'font-weight:bold;vertical-align:top'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line">                                       <tt id="link-500" class="py-name"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-500', 'TD', 'link-318');">TD</a></tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt><tt class="py-name">_valign</tt><tt class="py-op">=</tt><tt class="py-string">'top'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">                                       <tt id="link-501" class="py-name"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-501', 'TD', 'link-318');">TD</a></tt><tt class="py-op">(</tt><tt id="link-502" class="py-name"><a title="web2py.gluon.html.BEAUTIFY" class="py-name" href="#" onclick="return doclink('link-502', 'BEAUTIFY', 'link-486');">BEAUTIFY</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">                    <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-503', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-504" class="py-name" targets="Class web2py.gluon.html.TABLE=web2py.gluon.html.TABLE-class.html"><a title="web2py.gluon.html.TABLE" class="py-name" href="#" onclick="return doclink('link-504', 'TABLE', 'link-504');">TABLE</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt id="link-505" class="py-name"><a title="web2py.gluon.tools.Crud.rows" class="py-name" href="#" onclick="return doclink('link-505', 'rows', 'link-492');">rows</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">                    <tt class="py-keyword">pass</tt> </tt>
<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-506', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-507', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-508', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line">                <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-509" class="py-name"><a title="web2py.gluon.html.TR" class="py-name" href="#" onclick="return doclink('link-509', 'TR', 'link-323');">TR</a></tt><tt class="py-op">(</tt><tt id="link-510" class="py-name"><a title="web2py.gluon.html.TD" class="py-name" href="#" onclick="return doclink('link-510', 'TD', 'link-318');">TD</a></tt><tt class="py-op">(</tt><tt id="link-511" class="py-name"><a title="web2py.gluon.html.BEAUTIFY" class="py-name" href="#" onclick="return doclink('link-511', 'BEAUTIFY', 'link-486');">BEAUTIFY</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-line">                         <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt> </tt>
<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-512', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-513" class="py-name"><a title="web2py.gluon.html.TABLE" class="py-name" href="#" onclick="return doclink('link-513', 'TABLE', 'link-504');">TABLE</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">items</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">FieldStorage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-514" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-514', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">'FieldStorage object'</tt><tt class="py-op">)</tt> </tt>
<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">                <tt class="py-name">components</tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-515', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">components</tt> <tt class="py-op">=</tt> <tt class="py-name">components</tt> </tt>
</div></div><a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line"> </tt>
<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line"> </tt>
<a name="MENU"></a><div id="MENU-def"><a name="L2073"></a><tt class="py-lineno">2073</tt> <a class="py-toggle" href="#" id="MENU-toggle" onclick="return toggle('MENU');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.MENU-class.html">MENU</a><tt class="py-op">(</tt><tt class="py-base-class">DIV</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MENU-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MENU-expanded"><a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line"><tt class="py-docstring">    Used to build menus</tt> </tt>
<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line"><tt class="py-docstring">    Optional arguments</tt> </tt>
<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line"><tt class="py-docstring">      _class: defaults to 'web2py-menu web2py-menu-vertical'</tt> </tt>
<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line"><tt class="py-docstring">      ul_class: defaults to 'web2py-menu-vertical'</tt> </tt>
<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line"><tt class="py-docstring">      li_class: defaults to 'web2py-menu-expand'</tt> </tt>
<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line"><tt class="py-docstring">        menu = MENU([['name', False, URL(...), [submenu]], ...])</tt> </tt>
<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line"><tt class="py-docstring">        {{=menu}}</tt> </tt>
<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line"> </tt>
<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">    <tt id="link-516" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-516', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'ul'</tt> </tt>
<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line"> </tt>
<a name="MENU.__init__"></a><div id="MENU.__init__-def"><a name="L2089"></a><tt class="py-lineno">2089</tt> <a class="py-toggle" href="#" id="MENU.__init__-toggle" onclick="return toggle('MENU.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MENU-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MENU.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MENU.__init__-expanded"><a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt> </tt>
<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt> </tt>
<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'_class'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'web2py-menu web2py-menu-vertical'</tt> </tt>
<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'ul_class'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'ul_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'web2py-menu-vertical'</tt> </tt>
<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'li_class'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'li_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'web2py-menu-expand'</tt> </tt>
<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'li_active'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'li_active'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'web2py-menu-active'</tt> </tt>
<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'mobile'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'mobile'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
</div><a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line"> </tt>
<a name="MENU.serialize"></a><div id="MENU.serialize-def"><a name="L2103"></a><tt class="py-lineno">2103</tt> <a class="py-toggle" href="#" id="MENU.serialize-toggle" onclick="return toggle('MENU.serialize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MENU-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MENU.serialize-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MENU.serialize-expanded"><a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line">            <tt class="py-name">ul</tt> <tt class="py-op">=</tt> <tt id="link-517" class="py-name" targets="Class web2py.gluon.html.UL=web2py.gluon.html.UL-class.html"><a title="web2py.gluon.html.UL" class="py-name" href="#" onclick="return doclink('link-517', 'UL', 'link-517');">UL</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line">            <tt class="py-name">ul</tt> <tt class="py-op">=</tt> <tt id="link-518" class="py-name"><a title="web2py.gluon.html.UL" class="py-name" href="#" onclick="return doclink('link-518', 'UL', 'link-517');">UL</a></tt><tt class="py-op">(</tt><tt id="link-519" class="py-name"><a title="web2py.gluon.sqlhtml.AutocompleteWidget._class
web2py.gluon.sqlhtml.BooleanWidget._class
web2py.gluon.sqlhtml.DateWidget._class
web2py.gluon.sqlhtml.DatetimeWidget._class
web2py.gluon.sqlhtml.DecimalWidget._class
web2py.gluon.sqlhtml.DoubleWidget._class
web2py.gluon.sqlhtml.FormWidget._class
web2py.gluon.sqlhtml.IntegerWidget._class
web2py.gluon.sqlhtml.PasswordWidget._class
web2py.gluon.sqlhtml.StringWidget._class
web2py.gluon.sqlhtml.TextWidget._class
web2py.gluon.sqlhtml.TimeWidget._class
web2py.gluon.sqlhtml.UploadWidget._class" class="py-name" href="#" onclick="return doclink('link-519', '_class', 'link-376');">_class</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'ul_class'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt id="link-520" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-520', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">active</tt><tt class="py-op">,</tt> <tt class="py-name">link</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">link</tt><tt class="py-op">,</tt><tt id="link-521" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-521', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">                <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-522" class="py-name"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-522', 'LI', 'link-311');">LI</a></tt><tt class="py-op">(</tt><tt class="py-name">link</tt><tt class="py-op">)</tt> </tt>
<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-string">'no_link_url'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'no_link_url'</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-name">link</tt><tt class="py-op">:</tt> </tt>
<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line">                <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-523" class="py-name"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-523', 'LI', 'link-311');">LI</a></tt><tt class="py-op">(</tt><tt id="link-524" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-524', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">(</tt><tt id="link-525" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-525', 'name', 'link-93');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">link</tt><tt class="py-op">:</tt> </tt>
<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">                <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-526" class="py-name"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-526', 'LI', 'link-311');">LI</a></tt><tt class="py-op">(</tt><tt id="link-527" class="py-name" targets="Class web2py.gluon.html.A=web2py.gluon.html.A-class.html"><a title="web2py.gluon.html.A" class="py-name" href="#" onclick="return doclink('link-527', 'A', 'link-527');">A</a></tt><tt class="py-op">(</tt><tt id="link-528" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-528', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">_href</tt><tt class="py-op">=</tt><tt class="py-name">link</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">                <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-529" class="py-name"><a title="web2py.gluon.html.LI" class="py-name" href="#" onclick="return doclink('link-529', 'LI', 'link-311');">LI</a></tt><tt class="py-op">(</tt><tt id="link-530" class="py-name"><a title="web2py.gluon.html.A" class="py-name" href="#" onclick="return doclink('link-530', 'A', 'link-527');">A</a></tt><tt class="py-op">(</tt><tt id="link-531" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-531', 'name', 'link-93');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">_href</tt><tt class="py-op">=</tt><tt class="py-string">'#'</tt><tt class="py-op">,</tt> </tt>
<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">                          <tt class="py-name">_onclick</tt><tt class="py-op">=</tt><tt class="py-string">'javascript:void(0);return false;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-532" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-532', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">                <tt class="py-name">li</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'li_class'</tt><tt class="py-op">]</tt> </tt>
<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">                <tt class="py-name">li</tt><tt class="py-op">.</tt><tt id="link-533" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-533', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-534" class="py-name" targets="Method web2py.gluon.html.MENU.serialize()=web2py.gluon.html.MENU-class.html#serialize"><a title="web2py.gluon.html.MENU.serialize" class="py-name" href="#" onclick="return doclink('link-534', 'serialize', 'link-534');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">level</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'active_url'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'active_url'</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-name">link</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">li</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">                    <tt class="py-name">li</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">li</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'li_active'</tt><tt class="py-op">]</tt> </tt>
<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line">                    <tt class="py-name">li</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'li_active'</tt><tt class="py-op">]</tt> </tt>
<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-535" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-535', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;=</tt> <tt class="py-number">4</tt> <tt class="py-keyword">or</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-line">                <tt class="py-name">ul</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-536', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">li</tt><tt class="py-op">)</tt> </tt>
<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">ul</tt> </tt>
</div><a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line"> </tt>
<a name="MENU.serialize_mobile"></a><div id="MENU.serialize_mobile-def"><a name="L2131"></a><tt class="py-lineno">2131</tt> <a class="py-toggle" href="#" id="MENU.serialize_mobile-toggle" onclick="return toggle('MENU.serialize_mobile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MENU-class.html#serialize_mobile">serialize_mobile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">select</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MENU.serialize_mobile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MENU.serialize_mobile-expanded"><a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-537" class="py-name" targets="Method web2py.gluon.dal.BaseAdapter.select()=web2py.gluon.dal.BaseAdapter-class.html#select,Method web2py.gluon.dal.CouchDBAdapter.select()=web2py.gluon.dal.CouchDBAdapter-class.html#select,Method web2py.gluon.dal.GoogleDatastoreAdapter.select()=web2py.gluon.dal.GoogleDatastoreAdapter-class.html#select,Method web2py.gluon.dal.IMAPAdapter.select()=web2py.gluon.dal.IMAPAdapter-class.html#select,Method web2py.gluon.dal.MongoDBAdapter.select()=web2py.gluon.dal.MongoDBAdapter-class.html#select,Method web2py.gluon.dal.Set.select()=web2py.gluon.dal.Set-class.html#select,Method web2py.gluon.tools.Crud.select()=web2py.gluon.tools.Crud-class.html#select"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-537', 'select', 'link-537');">select</a></tt><tt class="py-op">:</tt> </tt>
<a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">            <tt id="link-538" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-538', 'select', 'link-537');">select</a></tt> <tt class="py-op">=</tt> <tt id="link-539" class="py-name" targets="Class web2py.gluon.html.SELECT=web2py.gluon.html.SELECT-class.html"><a title="web2py.gluon.html.SELECT" class="py-name" href="#" onclick="return doclink('link-539', 'SELECT', 'link-539');">SELECT</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">                <tt id="link-540" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-540', 'select', 'link-537');">select</a></tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-541', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-542" class="py-name"><a title="web2py.gluon.html.OPTION" class="py-name" href="#" onclick="return doclink('link-542', 'OPTION', 'link-385');">OPTION</a></tt><tt class="py-op">(</tt><tt id="link-543" class="py-name" targets="Class web2py.gluon.html.CAT=web2py.gluon.html.CAT-class.html"><a title="web2py.gluon.html.CAT" class="py-name" href="#" onclick="return doclink('link-543', 'CAT', 'link-543');">CAT</a></tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">_value</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">_selected</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-544" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-544', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt id="link-545" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-545', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name" targets="Method web2py.gluon.html.MENU.serialize_mobile()=web2py.gluon.html.MENU-class.html#serialize_mobile"><a title="web2py.gluon.html.MENU.serialize_mobile" class="py-name" href="#" onclick="return doclink('link-546', 'serialize_mobile', 'link-546');">serialize_mobile</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-547" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-547', 'select', 'link-537');">select</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt> <tt class="py-op">=</tt> <tt id="link-548" class="py-name"><a title="web2py.gluon.html.CAT" class="py-name" href="#" onclick="return doclink('link-548', 'CAT', 'link-543');">CAT</a></tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line">        <tt id="link-549" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-549', 'select', 'link-537');">select</a></tt><tt class="py-op">[</tt><tt class="py-string">'_onchange'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'window.location=this.value'</tt> </tt>
<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-550" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.select
web2py.gluon.dal.CouchDBAdapter.select
web2py.gluon.dal.GoogleDatastoreAdapter.select
web2py.gluon.dal.IMAPAdapter.select
web2py.gluon.dal.MongoDBAdapter.select
web2py.gluon.dal.Set.select
web2py.gluon.tools.Crud.select" class="py-name" href="#" onclick="return doclink('link-550', 'select', 'link-537');">select</a></tt> </tt>
</div><a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line"> </tt>
<a name="MENU.xml"></a><div id="MENU.xml-def"><a name="L2142"></a><tt class="py-lineno">2142</tt> <a class="py-toggle" href="#" id="MENU.xml-toggle" onclick="return toggle('MENU.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MENU-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MENU.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MENU.xml-expanded"><a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'mobile'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="web2py.gluon.html.MENU.serialize_mobile" class="py-name" href="#" onclick="return doclink('link-551', 'serialize_mobile', 'link-546');">serialize_mobile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-552', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="web2py.gluon.html.MENU.serialize" class="py-name" href="#" onclick="return doclink('link-553', 'serialize', 'link-534');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-554', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line"> </tt>
<a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line"> </tt>
<a name="embed64"></a><div id="embed64-def"><a name="L2149"></a><tt class="py-lineno">2149</tt> <a class="py-toggle" href="#" id="embed64-toggle" onclick="return toggle('embed64');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#embed64">embed64</a><tt class="py-op">(</tt> </tt>
<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line">    <tt class="py-param">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">    <tt class="py-param">file</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line">    <tt class="py-param">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line">    <tt class="py-param">extension</tt> <tt class="py-op">=</tt> <tt class="py-string">'image/gif'</tt><tt class="py-op">,</tt> </tt>
<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="embed64-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="embed64-expanded"><a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line"><tt class="py-docstring">    helper to encode the provided (binary) data into base64.</tt> </tt>
<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-line"><tt class="py-docstring">    :param filename: if provided, opens and reads this file in 'rb' mode</tt> </tt>
<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line"><tt class="py-docstring">    :param file: if provided, reads this file</tt> </tt>
<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line"><tt class="py-docstring">    :param data: if provided, uses the provided data</tt> </tt>
<a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line"> </tt>
<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">and</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name" targets="Static Method web2py.gluon.dal.DatabaseStoredFile.exists()=web2py.gluon.dal.DatabaseStoredFile-class.html#exists"><a title="web2py.gluon.dal.DatabaseStoredFile.exists" class="py-name" href="#" onclick="return doclink('link-555', 'exists', 'link-555');">exists</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line">        <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt id="link-556" class="py-name" targets="Method web2py.gluon.dal.DatabaseStoredFile.read()=web2py.gluon.dal.DatabaseStoredFile-class.html#read,Method web2py.gluon.debug.Pipe.read()=web2py.gluon.debug.Pipe-class.html#read,Method web2py.gluon.languages.lazyT.read()=web2py.gluon.languages.lazyT-class.html#read,Method web2py.gluon.portalocker.LockedFile.read()=web2py.gluon.portalocker.LockedFile-class.html#read,Method web2py.gluon.rocket.ChunkedReader.read()=web2py.gluon.rocket.ChunkedReader-class.html#read,Variable web2py.gluon.rocket.Connection.read=web2py.gluon.rocket.Connection-class.html#read,Method web2py.gluon.rocket.LimitingFileWrapper.read()=web2py.gluon.rocket.LimitingFileWrapper-class.html#read,Method web2py.gluon.tools.Crud.read()=web2py.gluon.tools.Crud-class.html#read"><a title="web2py.gluon.dal.DatabaseStoredFile.read
web2py.gluon.debug.Pipe.read
web2py.gluon.languages.lazyT.read
web2py.gluon.portalocker.LockedFile.read
web2py.gluon.rocket.ChunkedReader.read
web2py.gluon.rocket.Connection.read
web2py.gluon.rocket.LimitingFileWrapper.read
web2py.gluon.tools.Crud.read" class="py-name" href="#" onclick="return doclink('link-556', 'read', 'link-556');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line">        <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name" targets="Method web2py.gluon.dal.BaseAdapter.close()=web2py.gluon.dal.BaseAdapter-class.html#close,Method web2py.gluon.dal.DatabaseStoredFile.close()=web2py.gluon.dal.DatabaseStoredFile-class.html#close,Method web2py.gluon.dal.NoSQLAdapter.close()=web2py.gluon.dal.NoSQLAdapter-class.html#close,Method web2py.gluon.portalocker.LockedFile.close()=web2py.gluon.portalocker.LockedFile-class.html#close,Method web2py.gluon.rocket.Connection.close()=web2py.gluon.rocket.Connection-class.html#close,Method web2py.gluon.rocket.FileLikeSocket.close()=web2py.gluon.rocket.FileLikeSocket-class.html#close"><a title="web2py.gluon.dal.BaseAdapter.close
web2py.gluon.dal.DatabaseStoredFile.close
web2py.gluon.dal.NoSQLAdapter.close
web2py.gluon.portalocker.LockedFile.close
web2py.gluon.rocket.Connection.close
web2py.gluon.rocket.FileLikeSocket.close" class="py-name" href="#" onclick="return doclink('link-557', 'close', 'link-557');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'data:%s;base64,%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">extension</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
</div><a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line"> </tt>
<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line"> </tt>
<a name="test"></a><div id="test-def"><a name="L2171"></a><tt class="py-lineno">2171</tt> <a class="py-toggle" href="#" id="test-toggle" onclick="return toggle('test');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#test">test</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="test-expanded"><a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; from validators import *</tt> </tt>
<a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print DIV(A('click me', _href=URL(a='a', c='b', f='c')), BR(), HR(), DIV(SPAN(\"World\"), _class='unknown')).xml()</tt> </tt>
<a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;div&gt;&lt;a href=\"/a/b/c\"&gt;click me&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div class=\"unknown\"&gt;&lt;span&gt;World&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</tt> </tt>
<a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print DIV(UL(\"doc\",\"cat\",\"mouse\")).xml()</tt> </tt>
<a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;div&gt;&lt;ul&gt;&lt;li&gt;doc&lt;/li&gt;&lt;li&gt;cat&lt;/li&gt;&lt;li&gt;mouse&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</tt> </tt>
<a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print DIV(UL(\"doc\", LI(\"cat\", _class='feline'), 18)).xml()</tt> </tt>
<a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;div&gt;&lt;ul&gt;&lt;li&gt;doc&lt;/li&gt;&lt;li class=\"feline\"&gt;cat&lt;/li&gt;&lt;li&gt;18&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</tt> </tt>
<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print TABLE(['a', 'b', 'c'], TR('d', 'e', 'f'), TR(TD(1), TD(2), TD(3))).xml()</tt> </tt>
<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;table&gt;&lt;tr&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;e&lt;/td&gt;&lt;td&gt;f&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</tt> </tt>
<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; form=FORM(INPUT(_type='text', _name='myvar', requires=IS_EXPR('int(value)&lt;10')))</tt> </tt>
<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.xml()</tt> </tt>
<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;form action=\"\" enctype=\"multipart/form-data\" method=\"post\"&gt;&lt;input name=\"myvar\" type=\"text\" /&gt;&lt;/form&gt;</tt> </tt>
<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.accepts({'myvar':'34'}, formname=None)</tt> </tt>
<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line"><tt class="py-docstring">    False</tt> </tt>
<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.xml()</tt> </tt>
<a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;form action="" enctype="multipart/form-data" method="post"&gt;&lt;input name="myvar" type="text" value="34" /&gt;&lt;div class="error" id="myvar__error"&gt;invalid expression&lt;/div&gt;&lt;/form&gt;</tt> </tt>
<a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.accepts({'myvar':'4'}, formname=None, keepvalues=True)</tt> </tt>
<a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line"><tt class="py-docstring">    True</tt> </tt>
<a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.xml()</tt> </tt>
<a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;form action=\"\" enctype=\"multipart/form-data\" method=\"post\"&gt;&lt;input name=\"myvar\" type=\"text\" value=\"4\" /&gt;&lt;/form&gt;</tt> </tt>
<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; form=FORM(SELECT('cat', 'dog', _name='myvar'))</tt> </tt>
<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.accepts({'myvar':'dog'}, formname=None, keepvalues=True)</tt> </tt>
<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line"><tt class="py-docstring">    True</tt> </tt>
<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.xml()</tt> </tt>
<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;form action=\"\" enctype=\"multipart/form-data\" method=\"post\"&gt;&lt;select name=\"myvar\"&gt;&lt;option value=\"cat\"&gt;cat&lt;/option&gt;&lt;option selected=\"selected\" value=\"dog\"&gt;dog&lt;/option&gt;&lt;/select&gt;&lt;/form&gt;</tt> </tt>
<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; form=FORM(INPUT(_type='text', _name='myvar', requires=IS_MATCH('^\w+$', 'only alphanumeric!')))</tt> </tt>
<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.accepts({'myvar':'as df'}, formname=None)</tt> </tt>
<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line"><tt class="py-docstring">    False</tt> </tt>
<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print form.xml()</tt> </tt>
<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line"><tt class="py-docstring">    &lt;form action=\"\" enctype=\"multipart/form-data\" method=\"post\"&gt;&lt;input name=\"myvar\" type=\"text\" value=\"as df\" /&gt;&lt;div class=\"error\" id=\"myvar__error\"&gt;only alphanumeric!&lt;/div&gt;&lt;/form&gt;</tt> </tt>
<a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; session={}</tt> </tt>
<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; form=FORM(INPUT(value=\"Hello World\", _name=\"var\", requires=IS_MATCH('^\w+$')))</tt> </tt>
<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; if form.accepts({}, session,formname=None): print 'passed'</tt> </tt>
<a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; if form.accepts({'var':'test ', '_formkey': session['_formkey[None]']}, session, formname=None): print 'passed'</tt> </tt>
<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
</div><a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line"> </tt>
<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line"> </tt>
<a name="web2pyHTMLParser"></a><div id="web2pyHTMLParser-def"><a name="L2213"></a><tt class="py-lineno">2213</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser-toggle" onclick="return toggle('web2pyHTMLParser');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html">web2pyHTMLParser</a><tt class="py-op">(</tt><tt class="py-base-class">HTMLParser</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="web2pyHTMLParser-expanded"><a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-line"><tt class="py-docstring">    obj = web2pyHTMLParser(text) parses and html/xml text into web2py helpers.</tt> </tt>
<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line"><tt class="py-docstring">    obj.tree contains the root of the tree, and tree can be manipulated</tt> </tt>
<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; str(web2pyHTMLParser('hello&lt;div a="b" c=3&gt;wor&amp;lt;ld&lt;span&gt;xxx&lt;/span&gt;y&lt;script/&gt;yy&lt;/div&gt;zzz').tree)</tt> </tt>
<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line"><tt class="py-docstring">    'hello&lt;div a="b" c="3"&gt;wor&amp;lt;ld&lt;span&gt;xxx&lt;/span&gt;y&lt;script&gt;&lt;/script&gt;yy&lt;/div&gt;zzz'</tt> </tt>
<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; str(web2pyHTMLParser('&lt;div&gt;a&lt;span&gt;b&lt;/div&gt;c').tree)</tt> </tt>
<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-line"><tt class="py-docstring">    '&lt;div&gt;a&lt;span&gt;b&lt;/span&gt;&lt;/div&gt;c'</tt> </tt>
<a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; tree = web2pyHTMLParser('hello&lt;div a="b"&gt;world&lt;/div&gt;').tree</tt> </tt>
<a name="L2223"></a><tt class="py-lineno">2223</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; tree.element(_a='b')['_c']=5</tt> </tt>
<a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; str(tree)</tt> </tt>
<a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line"><tt class="py-docstring">    'hello&lt;div a="b" c="5"&gt;world&lt;/div&gt;'</tt> </tt>
<a name="L2226"></a><tt class="py-lineno">2226</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="web2pyHTMLParser.__init__"></a><div id="web2pyHTMLParser.__init__-def"><a name="L2227"></a><tt class="py-lineno">2227</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.__init__-toggle" onclick="return toggle('web2pyHTMLParser.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">text</tt><tt class="py-op">,</tt><tt class="py-param">closed</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'input'</tt><tt class="py-op">,</tt><tt class="py-string">'link'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.__init__-expanded"><a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">        <tt class="py-name">HTMLParser</tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="web2py.gluon.cache.Cache.__init__
web2py.gluon.cache.CacheAbstract.__init__
web2py.gluon.cache.CacheInRam.__init__
web2py.gluon.cache.CacheOnDisk.__init__
web2py.gluon.compileapp.LoadFactory.__init__
web2py.gluon.custom_import._DateTrackerImporter.__init__
web2py.gluon.custom_import._Web2pyImporter.__init__
web2py.gluon.dal.BaseAdapter.__init__
web2py.gluon.dal.CouchDBAdapter.__init__
web2py.gluon.dal.CubridAdapter.__init__
web2py.gluon.dal.DAL.__init__
web2py.gluon.dal.DB2Adapter.__init__
web2py.gluon.dal.DatabaseStoredFile.__init__
web2py.gluon.dal.Expression.__init__
web2py.gluon.dal.Field.__init__
web2py.gluon.dal.FieldLazy.__init__
web2py.gluon.dal.FieldVirtual.__init__
web2py.gluon.dal.FireBirdAdapter.__init__
web2py.gluon.dal.FireBirdEmbeddedAdapter.__init__
web2py.gluon.dal.GAEDecimalProperty.__init__
web2py.gluon.dal.GAEF.__init__
web2py.gluon.dal.GoogleDatastoreAdapter.__init__
web2py.gluon.dal.GoogleSQLAdapter.__init__
web2py.gluon.dal.IMAPAdapter.__init__
web2py.gluon.dal.InformixAdapter.__init__
web2py.gluon.dal.IngresAdapter.__init__
web2py.gluon.dal.JDBCPostgreSQLAdapter.__init__
web2py.gluon.dal.JDBCSQLiteAdapter.__init__
web2py.gluon.dal.MSSQLAdapter.__init__
web2py.gluon.dal.MongoDBAdapter.__init__
web2py.gluon.dal.MySQLAdapter.__init__
web2py.gluon.dal.OracleAdapter.__init__
web2py.gluon.dal.PostgreSQLAdapter.__init__
web2py.gluon.dal.Query.__init__
web2py.gluon.dal.Rows.__init__
web2py.gluon.dal.SAPDBAdapter.__init__
web2py.gluon.dal.SQLALL.__init__
web2py.gluon.dal.SQLCustomType.__init__
web2py.gluon.dal.SQLiteAdapter.__init__
web2py.gluon.dal.Set.__init__
web2py.gluon.dal.Table.__init__
web2py.gluon.dal.TeradataAdapter.__init__
web2py.gluon.dal.VirtualCommand.__init__
web2py.gluon.debug.Pipe.__init__
web2py.gluon.debug.WebDebugger.__init__
web2py.gluon.globals.Request.__init__
web2py.gluon.globals.Response.__init__
web2py.gluon.highlight.Highlighter.__init__
web2py.gluon.html.BEAUTIFY.__init__
web2py.gluon.html.DIV.__init__
web2py.gluon.html.FORM.__init__
web2py.gluon.html.MARKMIN.__init__
web2py.gluon.html.MENU.__init__
web2py.gluon.html.XML.__init__
web2py.gluon.html.web2pyHTMLParser.__init__
web2py.gluon.http.HTTP.__init__
web2py.gluon.languages.lazyT.__init__
web2py.gluon.languages.translator.__init__
web2py.gluon.main.HttpServer.__init__
web2py.gluon.newcron.Token.__init__
web2py.gluon.newcron.cronlauncher.__init__
web2py.gluon.newcron.extcron.__init__
web2py.gluon.newcron.hardcron.__init__
web2py.gluon.newcron.softcron.__init__
web2py.gluon.portalocker.LockedFile.__init__
web2py.gluon.restricted.RestrictedError.__init__
web2py.gluon.restricted.TicketStorage.__init__
web2py.gluon.rewrite.MapUrlIn.__init__
web2py.gluon.rewrite.MapUrlOut.__init__
web2py.gluon.rocket.ChunkedReader.__init__
web2py.gluon.rocket.Connection.__init__
web2py.gluon.rocket.FileLikeSocket.__init__
web2py.gluon.rocket.FileSystemWorker.__init__
web2py.gluon.rocket.FuturesMiddleware.__init__
web2py.gluon.rocket.LimitingFileWrapper.__init__
web2py.gluon.rocket.Listener.__init__
web2py.gluon.rocket.Monitor.__init__
web2py.gluon.rocket.Rocket.__init__
web2py.gluon.rocket.ThreadPool.__init__
web2py.gluon.rocket.WSGIExecutor.__init__
web2py.gluon.rocket.WSGIFuture.__init__
web2py.gluon.rocket.WSGIWorker.__init__
web2py.gluon.rocket.Worker.__init__
web2py.gluon.rocket._WorkItem.__init__
web2py.gluon.sanitizer.XssCleaner.__init__
web2py.gluon.scheduler.MetaScheduler.__init__
web2py.gluon.scheduler.Scheduler.__init__
web2py.gluon.scheduler.TYPE.__init__
web2py.gluon.scheduler.Task.__init__
web2py.gluon.scheduler.TaskReport.__init__
web2py.gluon.sqlhtml.AutocompleteWidget.__init__
web2py.gluon.sqlhtml.SQLFORM.__init__
web2py.gluon.sqlhtml.SQLTABLE.__init__
web2py.gluon.storage.Messages.__init__
web2py.gluon.template.BlockNode.__init__
web2py.gluon.template.Content.__init__
web2py.gluon.template.Node.__init__
web2py.gluon.template.SuperNode.__init__
web2py.gluon.template.TemplateParser.__init__
web2py.gluon.tools.Auth.__init__
web2py.gluon.tools.Crud.__init__
web2py.gluon.tools.Expose.__init__
web2py.gluon.tools.Mail.Attachment.__init__
web2py.gluon.tools.Mail.__init__
web2py.gluon.tools.PluginManager.__init__
web2py.gluon.tools.Recaptcha.__init__
web2py.gluon.tools.Service.JsonRpcException.__init__
web2py.gluon.tools.Service.__init__
web2py.gluon.validators.CLEANUP.__init__
web2py.gluon.validators.CRYPT.__init__
web2py.gluon.validators.IS_ALPHANUMERIC.__init__
web2py.gluon.validators.IS_DATE.__init__
web2py.gluon.validators.IS_DATETIME.__init__
web2py.gluon.validators.IS_DATETIME_IN_RANGE.__init__
web2py.gluon.validators.IS_DATE_IN_RANGE.__init__
web2py.gluon.validators.IS_DECIMAL_IN_RANGE.__init__
web2py.gluon.validators.IS_EMAIL.__init__
web2py.gluon.validators.IS_EMPTY_OR.__init__
web2py.gluon.validators.IS_EQUAL_TO.__init__
web2py.gluon.validators.IS_EXPR.__init__
web2py.gluon.validators.IS_FLOAT_IN_RANGE.__init__
web2py.gluon.validators.IS_GENERIC_URL.__init__
web2py.gluon.validators.IS_HTTP_URL.__init__
web2py.gluon.validators.IS_IMAGE.__init__
web2py.gluon.validators.IS_INT_IN_RANGE.__init__
web2py.gluon.validators.IS_IN_DB.__init__
web2py.gluon.validators.IS_IN_SET.__init__
web2py.gluon.validators.IS_IN_SUBSET.__init__
web2py.gluon.validators.IS_IPV4.__init__
web2py.gluon.validators.IS_LENGTH.__init__
web2py.gluon.validators.IS_LIST_OF.__init__
web2py.gluon.validators.IS_MATCH.__init__
web2py.gluon.validators.IS_NOT_EMPTY.__init__
web2py.gluon.validators.IS_NOT_IN_DB.__init__
web2py.gluon.validators.IS_SLUG.__init__
web2py.gluon.validators.IS_STRONG.__init__
web2py.gluon.validators.IS_TIME.__init__
web2py.gluon.validators.IS_UPLOAD_FILENAME.__init__
web2py.gluon.validators.IS_URL.__init__
web2py.gluon.widget.IO.__init__
web2py.gluon.widget.web2pyDialog.__init__
web2py.gluon.winservice.Service.__init__" class="py-name" href="#" onclick="return doclink('link-558', '__init__', 'link-405');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L2229"></a><tt class="py-lineno">2229</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-559" class="py-name"><a title="web2py.gluon.TAG
web2py.gluon.html.TAG
web2py.gluon.tools.TAG" class="py-name" href="#" onclick="return doclink('link-559', 'TAG', 'link-229');">TAG</a></tt><tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-op">=</tt> <tt class="py-name">closed</tt> </tt>
<a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-560" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-560', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">for</tt> <tt id="link-561" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-561', 'x', 'link-31');">x</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">__all__</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">eval</tt><tt class="py-op">(</tt><tt id="link-562" class="py-name"><a title="sqlite3.dbapi2.x" class="py-name" href="#" onclick="return doclink('link-562', 'x', 'link-31');">x</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-563" class="py-name"><a title="web2py.gluon.dal.BaseAdapter.DIV
web2py.gluon.dal.MongoDBAdapter.DIV
web2py.gluon.dal.NoSQLAdapter.DIV
web2py.gluon.html.DIV" class="py-name" href="#" onclick="return doclink('link-563', 'DIV', 'link-116');">DIV</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L2232"></a><tt class="py-lineno">2232</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-564" class="py-name" targets="Method web2py.gluon.dal.Rows.last()=web2py.gluon.dal.Rows-class.html#last"><a title="web2py.gluon.dal.Rows.last" class="py-name" href="#" onclick="return doclink('link-564', 'last', 'link-564');">last</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
</div><a name="web2pyHTMLParser.handle_starttag"></a><div id="web2pyHTMLParser.handle_starttag-def"><a name="L2234"></a><tt class="py-lineno">2234</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.handle_starttag-toggle" onclick="return toggle('web2pyHTMLParser.handle_starttag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#handle_starttag">handle_starttag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tagname</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.handle_starttag-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.handle_starttag-expanded"><a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt><tt class="py-op">.</tt><tt id="link-565" class="py-name" targets="Method web2py.gluon.dal.Expression.upper()=web2py.gluon.dal.Expression-class.html#upper"><a title="web2py.gluon.dal.Expression.upper" class="py-name" href="#" onclick="return doclink('link-565', 'upper', 'link-565');">upper</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">:</tt> </tt>
<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line">            <tt id="link-566" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-566', 'tag', 'link-101');">tag</a></tt><tt class="py-op">=</tt><tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="web2py.gluon.dal.Expression.upper" class="py-name" href="#" onclick="return doclink('link-567', 'upper', 'link-565');">upper</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> <tt class="py-name">tagname</tt><tt class="py-op">+=</tt><tt class="py-string">'/'</tt> </tt>
<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line">            <tt id="link-568" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-568', 'tag', 'link-101');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-569" class="py-name"><a title="web2py.gluon.TAG
web2py.gluon.html.TAG
web2py.gluon.tools.TAG" class="py-name" href="#" onclick="return doclink('link-569', 'TAG', 'link-229');">TAG</a></tt><tt class="py-op">[</tt><tt class="py-name">tagname</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">:</tt> <tt id="link-570" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-570', 'tag', 'link-101');">tag</a></tt><tt class="py-op">[</tt><tt class="py-string">'_'</tt><tt class="py-op">+</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">value</tt> </tt>
<a name="L2241"></a><tt class="py-lineno">2241</tt>  <tt class="py-line">        <tt id="link-571" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-571', 'tag', 'link-101');">tag</a></tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> </tt>
<a name="L2242"></a><tt class="py-lineno">2242</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-572', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt id="link-573" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-573', 'tag', 'link-101');">tag</a></tt><tt class="py-op">)</tt> </tt>
<a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-574" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-574', 'tag', 'link-101');">tag</a></tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-575', 'tag', 'link-101');">tag</a></tt><tt class="py-op">.</tt><tt id="link-576" class="py-name"><a title="web2py.gluon.dal.Expression.endswith" class="py-name" href="#" onclick="return doclink('link-576', 'endswith', 'link-39');">endswith</a></tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">=</tt><tt id="link-577" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-577', 'tag', 'link-101');">tag</a></tt> </tt>
<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-578" class="py-name"><a title="web2py.gluon.dal.Rows.last" class="py-name" href="#" onclick="return doclink('link-578', 'last', 'link-564');">last</a></tt> <tt class="py-op">=</tt> <tt id="link-579" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-579', 'tag', 'link-101');">tag</a></tt><tt class="py-op">.</tt><tt id="link-580" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-580', 'tag', 'link-101');">tag</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
</div><a name="web2pyHTMLParser.handle_data"></a><div id="web2pyHTMLParser.handle_data-def"><a name="L2247"></a><tt class="py-lineno">2247</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.handle_data-toggle" onclick="return toggle('web2pyHTMLParser.handle_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#handle_data">handle_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.handle_data-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.handle_data-expanded"><a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line">                <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-581" class="py-name"><a title="web2py.gluon.languages.lazyT.decode" class="py-name" href="#" onclick="return doclink('link-581', 'decode', 'link-19');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-line">                <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="web2py.gluon.languages.lazyT.decode" class="py-name" href="#" onclick="return doclink('link-582', 'decode', 'link-19');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'latin1'</tt><tt class="py-op">)</tt> </tt>
<a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-583', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-584" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-584', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">,</tt><tt class="py-string">'xmlcharref'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="web2pyHTMLParser.handle_charref"></a><div id="web2pyHTMLParser.handle_charref-def"><a name="L2254"></a><tt class="py-lineno">2254</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.handle_charref-toggle" onclick="return toggle('web2pyHTMLParser.handle_charref');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#handle_charref">handle_charref</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.handle_charref-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.handle_charref-expanded"><a name="L2255"></a><tt class="py-lineno">2255</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-585" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-585', 'name', 'link-93');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="web2py.gluon.dal.Expression.lower" class="py-name" href="#" onclick="return doclink('link-586', 'lower', 'link-366');">lower</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt> </tt>
<a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-587', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-588" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-588', 'name', 'link-93');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-589" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-589', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-590" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-590', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-591" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-591', 'name', 'link-93');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-592" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-592', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="web2pyHTMLParser.handle_entityref"></a><div id="web2pyHTMLParser.handle_entityref-def"><a name="L2259"></a><tt class="py-lineno">2259</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.handle_entityref-toggle" onclick="return toggle('web2pyHTMLParser.handle_entityref');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#handle_entityref">handle_entityref</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.handle_entityref-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.handle_entityref-expanded"><a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-593" class="py-name"><a title="web2py.gluon.html.DIV.append
web2py.gluon.template.BlockNode.append
web2py.gluon.template.Content.append" class="py-name" href="#" onclick="return doclink('link-593', 'append', 'link-40');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">name2codepoint</tt><tt class="py-op">[</tt><tt id="link-594" class="py-name"><a title="web2py.gluon.import_all.name" class="py-name" href="#" onclick="return doclink('link-594', 'name', 'link-93');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-595" class="py-name"><a title="web2py.gluon.languages.lazyT.encode" class="py-name" href="#" onclick="return doclink('link-595', 'encode', 'link-17');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="web2pyHTMLParser.handle_endtag"></a><div id="web2pyHTMLParser.handle_endtag-def"><a name="L2261"></a><tt class="py-lineno">2261</tt> <a class="py-toggle" href="#" id="web2pyHTMLParser.handle_endtag-toggle" onclick="return toggle('web2pyHTMLParser.handle_endtag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.web2pyHTMLParser-class.html#handle_endtag">handle_endtag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tagname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="web2pyHTMLParser.handle_endtag-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="web2pyHTMLParser.handle_endtag-expanded"><a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">        <tt class="py-comment"># this deals with unbalanced tags</tt> </tt>
<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt><tt class="py-op">==</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-596" class="py-name"><a title="web2py.gluon.dal.Rows.last" class="py-name" href="#" onclick="return doclink('link-596', 'last', 'link-564');">last</a></tt><tt class="py-op">:</tt> </tt>
<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line">                <tt class="py-name">parent_tagname</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-597" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-597', 'tag', 'link-101');">tag</a></tt> </tt>
<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> </tt>
<a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">,</tt> <tt class="py-string">"unable to balance tag %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">tagname</tt> </tt>
<a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parent_tagname</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt id="link-598" class="py-name"><a title="web2py.gluon.dal.Expression.len" class="py-name" href="#" onclick="return doclink('link-598', 'len', 'link-20');">len</a></tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-name">tagname</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
</div></div><a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line"> </tt>
<a name="markdown_serializer"></a><div id="markdown_serializer-def"><a name="L2273"></a><tt class="py-lineno">2273</tt> <a class="py-toggle" href="#" id="markdown_serializer-toggle" onclick="return toggle('markdown_serializer');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#markdown_serializer">markdown_serializer</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt><tt class="py-param">tag</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-param">attr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="markdown_serializer-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="markdown_serializer-expanded"><a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line">    <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">attr</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-599" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-599', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\s+'</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-600" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-600', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'br'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'\n\n'</tt> </tt>
<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-601" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-601', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h1'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-602" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-602', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h2'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">2</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-603" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-603', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h3'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">3</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-604" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-604', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h4'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">4</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-605" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-605', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'p'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2282"></a><tt class="py-lineno">2282</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-606" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-606', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'b'</tt> <tt class="py-keyword">or</tt> <tt id="link-607" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-607', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'strong'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'**%s**'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-608" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-608', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'em'</tt> <tt class="py-keyword">or</tt> <tt id="link-609" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-609', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'i'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'*%s*'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-610" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-610', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'tt'</tt> <tt class="py-keyword">or</tt> <tt id="link-611" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-611', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'code'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'`%s`'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-612" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-612', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'[%s](%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-613" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-613', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_href'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-614" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-614', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'img'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'![%s](%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-615" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-615', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_alt'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-616', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_src'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">text</tt> </tt>
</div><a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line"> </tt>
<a name="markmin_serializer"></a><div id="markmin_serializer-def"><a name="L2289"></a><tt class="py-lineno">2289</tt> <a class="py-toggle" href="#" id="markmin_serializer-toggle" onclick="return toggle('markmin_serializer');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html-module.html#markmin_serializer">markmin_serializer</a><tt class="py-op">(</tt><tt class="py-param">text</tt><tt class="py-op">,</tt><tt class="py-param">tag</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-param">attr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="markmin_serializer-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="markmin_serializer-expanded"><a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-line">    <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">attr</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-line">    <tt class="py-comment"># if tag is None: return re.sub('\s+',' ',text)</tt> </tt>
<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-617" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-617', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'br'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'\n\n'</tt> </tt>
<a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-618" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-618', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h1'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'# '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2294"></a><tt class="py-lineno">2294</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-619" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-619', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h2'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">2</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-620" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-620', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h3'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">3</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-621" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-621', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'h4'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt><tt class="py-op">*</tt><tt class="py-number">4</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-622" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-622', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'p'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-623" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-623', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'li'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'\n- '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt> </tt>
<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-624" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-624', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'tr'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">text</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-625" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-625', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'table'</tt><tt class="py-op">,</tt><tt class="py-string">'blockquote'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'\n-----\n'</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">'\n------\n'</tt> </tt>
<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-626" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-626', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'td'</tt><tt class="py-op">,</tt><tt class="py-string">'th'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">' | '</tt><tt class="py-op">+</tt><tt class="py-name">text</tt> </tt>
<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-627" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-627', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt><tt class="py-string">'strong'</tt><tt class="py-op">,</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'**%s**'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-628" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-628', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'em'</tt><tt class="py-op">,</tt><tt class="py-string">'i'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">"''%s''"</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-629" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-629', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'tt'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'``%s``'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt><tt class="py-op">.</tt><tt id="link-630" class="py-name"><a title="web2py.gluon.sanitizer.XssCleaner.strip" class="py-name" href="#" onclick="return doclink('link-630', 'strip', 'link-163');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-631" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-631', 'tag', 'link-101');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'``\n%s``'</tt> <tt class="py-op">%</tt> <tt class="py-name">text</tt> </tt>
<a name="L2306"></a><tt class="py-lineno">2306</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-632" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-632', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'[[%s %s]]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-633', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_href'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-634" class="py-name"><a title="web2py.gluon.html.A.tag
web2py.gluon.html.B.tag
web2py.gluon.html.BEAUTIFY.tag
web2py.gluon.html.BODY.tag
web2py.gluon.html.BR.tag
web2py.gluon.html.BUTTON.tag
web2py.gluon.html.CAT.tag
web2py.gluon.html.CENTER.tag
web2py.gluon.html.COL.tag
web2py.gluon.html.COLGROUP.tag
web2py.gluon.html.DIV.tag
web2py.gluon.html.EM.tag
web2py.gluon.html.EMBED.tag
web2py.gluon.html.FIELDSET.tag
web2py.gluon.html.FORM.tag
web2py.gluon.html.H1.tag
web2py.gluon.html.H2.tag
web2py.gluon.html.H3.tag
web2py.gluon.html.H4.tag
web2py.gluon.html.H5.tag
web2py.gluon.html.H6.tag
web2py.gluon.html.HEAD.tag
web2py.gluon.html.HR.tag
web2py.gluon.html.HTML.tag
web2py.gluon.html.I.tag
web2py.gluon.html.IFRAME.tag
web2py.gluon.html.IMG.tag
web2py.gluon.html.INPUT.tag
web2py.gluon.html.LABEL.tag
web2py.gluon.html.LEGEND.tag
web2py.gluon.html.LI.tag
web2py.gluon.html.LINK.tag
web2py.gluon.html.MENU.tag
web2py.gluon.html.META.tag
web2py.gluon.html.OBJECT.tag
web2py.gluon.html.OL.tag
web2py.gluon.html.OPTGROUP.tag
web2py.gluon.html.OPTION.tag
web2py.gluon.html.P.tag
web2py.gluon.html.PRE.tag
web2py.gluon.html.SCRIPT.tag
web2py.gluon.html.SELECT.tag
web2py.gluon.html.SPAN.tag
web2py.gluon.html.STYLE.tag
web2py.gluon.html.TABLE.tag
web2py.gluon.html.TBODY.tag
web2py.gluon.html.TD.tag
web2py.gluon.html.TEXTAREA.tag
web2py.gluon.html.TFOOT.tag
web2py.gluon.html.TH.tag
web2py.gluon.html.THEAD.tag
web2py.gluon.html.TITLE.tag
web2py.gluon.html.TR.tag
web2py.gluon.html.TT.tag
web2py.gluon.html.UL.tag
web2py.gluon.html.XHTML.tag" class="py-name" href="#" onclick="return doclink('link-634', 'tag', 'link-101');">tag</a></tt><tt class="py-op">==</tt><tt class="py-string">'img'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'[[%s %s left]]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-635" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-635', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_alt'</tt><tt class="py-op">,</tt><tt class="py-string">'no title'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name"><a title="web2py.gluon.dal.Reference.get" class="py-name" href="#" onclick="return doclink('link-636', 'get', 'link-302');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'_src'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">text</tt> </tt>
</div><a name="L2309"></a><tt class="py-lineno">2309</tt>  <tt class="py-line"> </tt>
<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line"> </tt>
<a name="MARKMIN"></a><div id="MARKMIN-def"><a name="L2311"></a><tt class="py-lineno">2311</tt> <a class="py-toggle" href="#" id="MARKMIN-toggle" onclick="return toggle('MARKMIN');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html">MARKMIN</a><tt class="py-op">(</tt><tt class="py-base-class">XmlComponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MARKMIN-expanded"><a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line"><tt class="py-docstring">    For documentation: http://web2py.com/examples/static/markmin.html</tt> </tt>
<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="MARKMIN.__init__"></a><div id="MARKMIN.__init__-def"><a name="L2315"></a><tt class="py-lineno">2315</tt> <a class="py-toggle" href="#" id="MARKMIN.__init__-toggle" onclick="return toggle('MARKMIN.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">extra</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">allowed</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">sep</tt><tt class="py-op">=</tt><tt class="py-string">'p'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MARKMIN.__init__-expanded"><a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-name">extra</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">allowed</tt> <tt class="py-op">=</tt> <tt class="py-name">allowed</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sep</tt> <tt class="py-op">=</tt> <tt class="py-name">sep</tt> </tt>
</div><a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-line"> </tt>
<a name="MARKMIN.xml"></a><div id="MARKMIN.xml-def"><a name="L2321"></a><tt class="py-lineno">2321</tt> <a class="py-toggle" href="#" id="MARKMIN.xml-toggle" onclick="return toggle('MARKMIN.xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html#xml">xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN.xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MARKMIN.xml-expanded"><a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line"><tt class="py-docstring">        calls the gluon.contrib.markmin render function to convert the wiki syntax</tt> </tt>
<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-637" class="py-name"><a title="web2py.gluon.globals.Response.render
web2py.gluon.template.render" class="py-name" href="#" onclick="return doclink('link-637', 'render', 'link-4');">render</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">extra</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extra</tt><tt class="py-op">,</tt><tt class="py-name">allowed</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">allowed</tt><tt class="py-op">,</tt><tt class="py-name">sep</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sep</tt><tt class="py-op">)</tt> </tt>
</div><a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line"> </tt>
<a name="MARKMIN.__str__"></a><div id="MARKMIN.__str__-def"><a name="L2327"></a><tt class="py-lineno">2327</tt> <a class="py-toggle" href="#" id="MARKMIN.__str__-toggle" onclick="return toggle('MARKMIN.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MARKMIN.__str__-expanded"><a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-638" class="py-name"><a title="web2py.gluon.dal.Rows.xml
web2py.gluon.html.A.xml
web2py.gluon.html.CODE.xml
web2py.gluon.html.DIV.xml
web2py.gluon.html.FORM.xml
web2py.gluon.html.HTML.xml
web2py.gluon.html.INPUT.xml
web2py.gluon.html.MARKMIN.xml
web2py.gluon.html.MENU.xml
web2py.gluon.html.P.xml
web2py.gluon.html.SCRIPT.xml
web2py.gluon.html.STYLE.xml
web2py.gluon.html.XHTML.xml
web2py.gluon.html.XML.xml
web2py.gluon.html.XmlComponent.xml
web2py.gluon.languages.lazyT.xml
web2py.gluon.serializers.xml
web2py.gluon.tools.Expose.xml
web2py.gluon.tools.Recaptcha.xml
web2py.gluon.tools.Service.xml" class="py-name" href="#" onclick="return doclink('link-638', 'xml', 'link-15');">xml</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line"> </tt>
<a name="MARKMIN.flatten"></a><div id="MARKMIN.flatten-def"><a name="L2330"></a><tt class="py-lineno">2330</tt> <a class="py-toggle" href="#" id="MARKMIN.flatten-toggle" onclick="return toggle('MARKMIN.flatten');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html#flatten">flatten</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">render</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN.flatten-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MARKMIN.flatten-expanded"><a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line"><tt class="py-docstring">        return the text stored by the MARKMIN object rendered by the render function</tt> </tt>
<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
</div><a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-line"> </tt>
<a name="MARKMIN.elements"></a><div id="MARKMIN.elements-def"><a name="L2336"></a><tt class="py-lineno">2336</tt> <a class="py-toggle" href="#" id="MARKMIN.elements-toggle" onclick="return toggle('MARKMIN.elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="web2py.gluon.html.MARKMIN-class.html#elements">elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MARKMIN.elements-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MARKMIN.elements-expanded"><a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
<a name="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line"><tt class="py-docstring">        to be considered experimental since the behavior of this method is questionable</tt> </tt>
<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line"><tt class="py-docstring">        another options could be TAG(self.text).elements(*args,**kargs)</tt> </tt>
<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">]</tt> </tt>
</div></div><a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line"> </tt>
<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line"> </tt>
<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">doctest</tt> </tt>
<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-line">    <tt class="py-name">doctest</tt><tt class="py-op">.</tt><tt class="py-name">testmod</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="web2py.gluon-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://www.web2py.com">web2py Web Framework</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0beta1 on Sun Mar  4 22:12:01 2012
    </td>
    <td align="right" class="footer">
      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie()
  // -->
</script>
  
</body>
</html>
